اذهب إلى المحتوى
  • 0

ما هي الممارسات الجيدة لكتابة كود بايثون نظيف

Ail Ahmed

السؤال

السلام عليكم

اي افضل طريق لكتب كود باثيون واي فيه دول يعتبر كود نظيف

ده

device = "cuda" if torch.cuda.is_available() else "cpu" 

والا ده

device = "cuda" 
if torch.cuda.is_available():
  pass
else "cpu":
  pass

 

اي الفرق بين الثنين دول هل في فرق في السرعه او الذكرا وهكذا يعني

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

بالطبع الطريقة الثانية، فمن الوهلة الأولى تستطيع معرفة وظيفة الكود وآلية عمله.

هناك مقولة جيدة، وهي "من الصعب قراءة الكود ومن السهل كتابته".

ففي الكود البسيط، الطريقة الأولى أفضل، لكن في المشاريع الحقيقية لكن يكون هناك كود بسيط وصغير، لذا المحافظة على كود قابل للقراءة وليس مختصر أفضل.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 دقائق مضت قال Mustafa Suleiman:

بالطبع الطريقة الثانية، فمن الوهلة الأولى تستطيع معرفة وظيفة الكود وآلية عمله.

هناك مقولة جيدة، وهي "من الصعب قراءة الكود ومن السهل كتابته".

ففي الكود البسيط، الطريقة الأولى أفضل، لكن في المشاريع الحقيقية لكن يكون هناك كود بسيط وصغير، لذا المحافظة على كود قابل للقراءة وليس مختصر أفضل.

تمام شكرااا لحضرتك

ونا كمان بتفق مع حضرتك جدا ولكن في ناس بتكب بالطريق الاول فا كانت عاوز اشوف الموضع ده

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

وعليكم السلام ورحمة الله،

دعنا أولًا نتفق على شيء هام جدًا،

وهو إذا لديك اختياران كلاهما صحيح، فلا يوجد تفضيل مطلق (أي دائمًا)، بمعنى لا يوجد اختيار هو الأفضل دائمًا، ولكن يوجد اختيار هو الأنسب للحالة التي بين أيدينا، (أؤكد أن الخيارين صحيحان فنحن هنا لا نقارن بين ممارسة صحيحة وأخرى خاطئة).

كلتا الشفرتين صحيحتان سواء كصيغة أو كممارسة، نأتي هنا للأنسب، أيهما أنسب؟

هذا يتوقف على الحالة كما وضحت،

ففي الكثير من الأحيان يفضل المبرمجون الطريقة الثانية كما وضح مهندس مصطفى @Mustafa Suleiman لأنها طريقة واضحة ومباشرة وخصوصًا إذا يوجد مبتدئين بالفريق فربما لا يعرفون الطريق الأولى.

وبالمناسبة الطريقة الأولى مشهورة جدًا في لغات البرمجة وتسمى "العامل الثلاثي" ternary operator ويفضلها الكثير من المبرمجين لأنها رائعة في إعطاء المتغير إحدى قيمتين بناء على شرط معين، فمن يعتاد عليها يدمنها حرفيًا (وأنا واحد منهم)، ولكن هل أستخدمها في كل مكان؟ بالطبع لا ولكن هناك حالات مناسبة لها وحالات أخرى غير مناسبة، من أكبر الفوائد لهذه الطريقة أنها تجنب الوقوع في الأخطاء، انظر للشيفرات التالية ..

device = "cuda" 
if torch.cuda.is_available():
  device = "cude"
else "cpu":
  devic = "cpu"

هل لاحظت شيئًا؟

لقد حدث خطأ إملائي في اسم المتغير بالسطر الأخير، وهذا سيسبب في مشاكل كبيرة جدًا، لأن بايثون سيعتبر أنك تريد تعريف متغير جديد اسمه devic ولا يعلم أنه تقصد المتغير device، هذه من ضمن فوائد العامل الثلاثي، ولكن كما قلت، يستخدم بحذر.

الخلاصة:

تعتمد الطريقة على الحالة التي بين يديك،

فإذا كان الفريق يحتوي العديد من المبتدئين، فالطريقة الثانية أنسب،

أما إذا لديهم خلفية جيدة عن العامل الثلاثي، فالطريقة الثانية ستكون أنسب في حالة إعطاء إحدى قيمتين للمتغير بناء على شرط معين.

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 27 دقائق مضت قال El Sayed El Tohamy:

وعليكم السلام ورحمة الله،

دعنا أولًا نتفق على شيء هام جدًا،

وهو إذا لديك اختياران كلاهما صحيح، فلا يوجد تفضيل مطلق (أي دائمًا)، بمعنى لا يوجد اختيار هو الأفضل دائمًا، ولكن يوجد اختيار هو الأنسب للحالة التي بين أيدينا، (أؤكد أن الخيارين صحيحان فنحن هنا لا نقارن بين ممارسة صحيحة وأخرى خاطئة).

كلتا الشفرتين صحيحتان سواء كصيغة أو كممارسة، نأتي هنا للأنسب، أيهما أنسب؟

هذا يتوقف على الحالة كما وضحت،

ففي الكثير من الأحيان يفضل المبرمجون الطريقة الثانية كما وضح مهندس مصطفى @Mustafa Suleiman لأنها طريقة واضحة ومباشرة وخصوصًا إذا يوجد مبتدئين بالفريق فربما لا يعرفون الطريق الأولى.

وبالمناسبة الطريقة الأولى مشهورة جدًا في لغات البرمجة وتسمى "العامل الثلاثي" ternary operator ويفضلها الكثير من المبرمجين لأنها رائعة في إعطاء المتغير إحدى قيمتين بناء على شرط معين، فمن يعتاد عليها يدمنها حرفيًا (وأنا واحد منهم)، ولكن هل أستخدمها في كل مكان؟ بالطبع لا ولكن هناك حالات مناسبة لها وحالات أخرى غير مناسبة، من أكبر الفوائد لهذه الطريقة أنها تجنب الوقوع في الأخطاء، انظر للشيفرات التالية ..

device = "cuda" 
if torch.cuda.is_available():
  device = "cude"
else "cpu":
  devic = "cpu"

هل لاحظت شيئًا؟

لقد حدث خطأ إملائي في اسم المتغير بالسطر الأخير، وهذا سيسبب في مشاكل كبيرة جدًا، لأن بايثون سيعتبر أنك تريد تعريف متغير جديد اسمه devic ولا يعلم أنه تقصد المتغير device، هذه من ضمن فوائد العامل الثلاثي، ولكن كما قلت، يستخدم بحذر.

الخلاصة:

تعتمد الطريقة على الحالة التي بين يديك،

فإذا كان الفريق يحتوي العديد من المبتدئين، فالطريقة الثانية أنسب،

أما إذا لديهم خلفية جيدة عن العامل الثلاثي، فالطريقة الثانية ستكون أنسب في حالة إعطاء إحدى قيمتين للمتغير بناء على شرط معين.

 

شكراا لحضرتك جدا

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...