ما هو اصطلاح التسمية في بيثون متغير وظيفة الأسماء ؟
-
03-07-2019 - |
سؤال
قادمة من C# خلفية اصطلاح التسمية المتغيرات وطريقة أسماء عادة إما CamelCase أو حالة باسكال:
// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()
في بيثون ، لقد رأيت أعلاه ولكن رأيت أيضا يؤكد المستخدمة:
# python example
this_is_my_variable = 'a'
def this_is_my_function():
هل هناك أكثر من الأفضل ، نهائي الترميز نمط الثعبان ؟
المحلول
وانظر بيثون PEP 8 .
<اقتباس فقرة> يجب أن تكونوأسماء وظيفة صغيرة، بكلمات مفصولة سفلية كما من الضروري تحسين إمكانية القراءة.
ويسمح mixedCase فقط في سياقات حيث أن هذا بالفعل السائدة أسلوب
اقتباس فقرة>والمتغيرات ...
<اقتباس فقرة>استخدم وظيفة قواعد التسمية: أحرف صغيرة مع الكلمات مفصولة يؤكد الضرورة لتحسين سهولة القراءة.
اقتباس فقرة> وأنا شخصيا تحيد عن هذا لأنني كما يفضل mixedCase
على lower_case
للمشاريع الخاصة.
نصائح أخرى
دليل نمط بيثون جوجل لديه اتفاقية التالية:
<اقتباس فقرة>وMODULE_NAME، PACKAGE_NAME، اسم_الفئة، METHOD_NAME، ExceptionName، FUNCTION_NAME، GLOBAL_CONSTANT_NAME، global_var_name، instance_var_name، function_parameter_name، local_var_name
اقتباس فقرة> وينبغي تطبيق نظام تسمية مشابهة لCLASS_CONSTANT_NAME
ديفيد Goodger (في "كود مثل Pythonista" هنا) يصف بيب 8 التوصيات على النحو التالي:
joined_lower
عن وظائف الطرق ، سمات المتغيراتjoined_lower
أوALL_CAPS
بالنسبة الثوابتStudlyCaps
لفئاتcamelCase
فقط لتتوافق مع قبل الاتفاقيات القائمة
كما دليل نمط لل كود بايثون يعترف ،
اصطلاحات التسمية من بايثون مكتبة قليلا من الفوضى ، لذلك سنقوم لم تحصل على هذا يتسق تماما
لاحظ أن هذا يشير فقط إلى بايثون المكتبة القياسية.إذا لم يتمكنوا من الحصول أن متناسقة ، ثم هناك بالكاد بكثير من الأمل في وجود عموما-انضمت إلى اتفاقية كل كود بايثون هناك ؟
من ذلك ، و من هنا أود أن نستنتج أنه لا فظيع الخطيئة لو واحد يبقي باستخدام على سبيل المثالجافا أو C#'s (واضحة و راسخة) اصطلاحات تسمية المتغيرات والوظائف عند العبور إلى بيثون.مع الأخذ في الاعتبار بالطبع أنه من الأفضل أن تلتزم مع أيا كان النمط السائد على تعليمات البرمجة الأساسية / المشروع / فريق يحدث أن تكون.كما الثعبان نمط دليل ، الاتساق الداخلي معظم الأمور.
لا تتردد في رفض لي زنديق.:-) مثل OP, أنا لست "Pythonista" ليس بعد على أي حال.
وهناك href="http://www.python.org/dev/peps/pep-0008/" PEP 8 ، كما تظهر إجابات أخرى، ولكن PEP 8 ما هو إلا دليل الأسلوب للمكتبة القياسية، وانها اتخذت فقط كما الإنجيل فيه. واحدة من الانحرافات الأكثر شيوعا من PEP (8) لأجزاء أخرى من التعليمات البرمجية هي تسمية متغير، وتحديدا للطرق. لا يوجد نمط السائد واحد، على الرغم من أن النظر في حجم التعليمات البرمجية التي تستخدم mixedCase، إذا كان للمرء أن يجعل فإن تعداد واحد صارم ربما في نهاية المطاف مع نسخة من PEP 8 مع mixedCase. هناك القليل الانحراف الأخرى من PEP 8 هذا هو تماما كما هو شائع.
وكما ذكر، PEP 8 يقول لاستخدام lower_case_with_underscores
للمتغيرات والأساليب وظائف.
وانا افضل استخدام lower_case_with_underscores
للمتغيرات وmixedCase
لأساليب وظائف يجعل رمز أكثر وضوحا وقابلية للقراءة. وهكذا بعد زن بايثون "صريحة أفضل من الضمني" و "المقروئية التهم "
وأنا شخصيا أحاول استخدام CamelCase لفئات وأساليب mixedCase وظائف. المتغيرات وعادة ما تكون تؤكد منفصلة (عندما أتذكر). بهذه الطريقة استطيع ان اقول في لمحة بالضبط ما ادعو وليس كل ما تبحث نفسه.
ومعظم الناس يفضلون الثعبان سفلية، ولكن حتى أستخدمه الثعبان منذ أكثر من 5 سنوات الآن، ما زلت لا أحب لهم. أنها مجرد إلقاء نظرة قبيحة لي، ولكن ربما هذا كل جافا في رأسي.
وأنا ببساطة مثل CamelCase أفضل لأنه يناسب بشكل أفضل مع الطريقة تتم تسمية الطبقات، وتشعر أنها أكثر منطقية أن يكون SomeClass.doSomething()
من SomeClass.do_something()
. اذا نظرت حولك في مؤشر وحدة العالمي في بيثون، وسوف تجد على حد سواء، وهو ما يرجع ذلك إلى حقيقة أنه من مجموعة من المكتبات من مختلف المصادر التي نمت العمل الإضافي وليس شيئا تم تطويره من قبل شركة واحدة مثل الشمس مع قواعد الترميز صارمة . وأود أن أقول خلاصة القول هي: استخدام ما تريد أفضل، انها مجرد مسألة ذوق شخصي
كذلك ما @JohnTESlade وقد أجاب. Google python دليل نمط لديه بعض أنيق جدا توصيات ،
أسماء لتجنب
- حرف واحد من الأسماء باستثناء عدادات أو التكرار
- شرطات (-) في أي حزمة/وحدة نمطية اسم
\__double_leading_and_trailing_underscore__ names
(محجوز من قبل الثعبان)
اصطلاح التسمية
- "الداخلية" يعني الداخلية إلى وحدة أو المحمية أو خاصة داخل الصف.
- يتبع واحد بتسطير أسفل السطر (_) لديها بعض الدعم من أجل حماية وحدة المتغيرات والوظائف (غير المدرجة مع الواردات * من).يتبع مزدوج أسفل السطر (__) أن متغير مثيل أو أسلوب فعال يعمل على جعل متغير أو طريقة خاصة إلى الدرجة (باستخدام اسم من الضغط).
- المكان ذات فئات أعلى مستوى الوظائف معا في وحدة نمطية.على عكس جافا ، هناك حاجة إلى تحد نفسك على صف واحد لكل وحدة.
- استخدام
CapWords
عن أسماء فئة ، ولكنlower_with_under.py
عن أسماء الوحدة النمطية.على الرغم من أن هناك العديد من الوحدات الموجودة اسمهCapWords.py
, هذا هو الآن بالإحباط لأن الأمر محير عند وحدة يحدث أن تكون سميت فئة.("انتظر ... هل أنا أكتبimport StringIO
أوfrom StringIO import StringIO
?")
وهناك ورقة حول هذا: HTTP: // شبكة الاتصالات العالمية .cs.kent.edu / ~ jmaletic / ورقات / ICPC2010-CamelCaseUnderScoreClouds.pdf
وTL، DR تقول ان snake_case هو أكثر قابلية للقراءة من camelCase. هذا هو السبب في استخدام اللغات الحديثة (أو ينبغي أن تستخدم) ثعبان أينما كانوا يستطيعون.
واسلوب الترميز عادة ما يكون جزءا من معايير السياسة / اتفاقية الداخلية للمؤسسة، ولكن أعتقد بشكل عام، وأسلوب all_lower_case_underscore_separator (وتسمى أيضا snake_case) هو الأكثر شيوعا في بيثون.
وعادة، واحد اتبع الاتفاقيات المستخدمة في المكتبة القياسية اللغة و.