الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف تسمي متغيراتك؟

مغلقاستطلاع
بدأه System Down في 19 فبراير 2005 · 34 رد · 5,541 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام

ما هي الطريقة التي تتبعها في تسمية متغيراتك؟

58 مشارك في التصويت

?? ?? ??????? ???? ?????? ?? ????? ?????????

camelCase14 صوت · 24%
PascalCase13 صوت · 22%
Hungarian Notation5 صوت · 9%
???? ?? ??? ??????14 صوت · 24%
???? ??? ???????!6 صوت · 10%
???????? underscore _6 صوت · 10%
#1 صاحب الموضوع

أفضل طريقة التي تسمي بها المتغيرات موضوع نقاش طويل (و عقيم) و في النهاية يعود الى "الستايل" الذي يحبذه المبرمج. بالنسبة لي لا يوجد هناك طريقة صحيحة أو خاطئة طالما كنت تتبع منهجية معينة في التسمية و تقوم بتطبيقها من أول المشروع الى آخره (بالذات اذا كنت تعمل ضمن فريق). على العموم أنا لست هنا لأفتي أي أسلوب أفضل و لكن لأعرف كيف يقوم الشباب بتسمية متغيراتهم. للذين لا يعرفون ما هي الأساليب التي سردتها بالأعلى، هذا وصف مختصر:

PascalCase

أول حرف في المتغير و فب بداية كل كل كلمة كبير و الباقي صغير مثل FirstName, PhoneNumber

camelCase

أول حرف في المتغير صغير و أول حرف في بداية كل كلمة أخرى كبير و الباقي صغير مثل firstName, phoneNumber

Hungarian Notation

هذا النظام يحبه مبرمجوا الفيجول بيسك (القديم) و لكن ميكروسوفت تنصح بعد استخدامه في الدوت نيت. هو شبيه بالـPascal Case و لكن يسبق اسم المتغير مجموعة من الأحرف (ثلاثة عادة) تصف نوع هذا المتغير مثل strFirstName, intPhoneNumber

#2

PascalCase

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#3

غالباً ما يكون PascalCase بالنسبة لي، فهذه الطريقة أسهل بكثير في قراءة الـ Variables\Class name\Method name\Parameters

بالنسبة للـ Controls فأستخدم معها طريقة Hungarian Notation، فهي ممتازة جداً في التمييز بين أنواع و أسماء الـ Controls ، مثلاً btnConnect و txtAddress

رأس الحكمة الإيمان بالله

#4

هناك شيء مهم وهو التفريق بين

أسماء class و member و Parametersو المتغيرات داخل الدوال و أسماء الدوال

فـ class تستخدم التسمية PascalCase مع method name لكونها واجهه لمن سوف يبرمج عليها المبرمجون

أما الباقي فتستخدم النمط المحبب للشخص نفسه

#5

أستخدم خليطا من عدة أساليب و "حسب مزاجي وقت كتابة الكود" :D ،

أحيانا أسمي المتغير بهذه الطريقة customer_name (لم تذكره ضمن الخيارات استعمال underscore، قمت بإضافته)

وأحيانا أسميه هكذا : Customer_Name

وأحيانا: CustomerName، وأحيانا customername

ولا أنسي حين انتقدني أحد الأساتذة عند رؤيته تصميم قاعدة بيانات بقوله: "انت شنو حكايتك؟ اثبت في طريقة كتابة واحدة! مرة مستعمل underscore ومرة عاملها capital"

:lol:

فكر بطريقة أخرى

#6

كنت استخدم اسلوب walcom من قبل :D مع استخدام ال Hungarian Notation و لكن الان استخدم نفس الاسلوب الذى يتبعه محمد عبد العليم و قد تعلمته من احد المهندسين اقصد اسلوب ال PascalCase فى كتابة الكود و لكنه يحتاج للتعود و خصوصاً لمن اعتادوا النقر السريع على لوحة المفاتيح

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#7

أنا أيضاً مثل الأخ عبدالعليم استخدم الـPascalCase لمتغيراتي و أستخدم البتاع الهنغارية للكونترولز.

#8

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

أما بالنسبة إلى Hangarian، فلا أستعملها، لكن لدي سؤال، ماذا لو كان المتغير ليس رقما أو كلمة كيف تكون طريقة كتابتها، مثلا متغير من نوع Frame أو Button أي شيء آخر فكيف تكتبها بهذه الطريقة؟ وليكن زر لتأكيد إدخال رقم الهاتف! أو متغير يمثل Collection أو أي Object?

تم تعديل هذه المشاركة بواسطة أبومازن في 23 مارس 2005 في 08:40

#9

لقد

رأيت أهمية الكتابة في هذا الموضوع....

ويعود الشكر لكاتب الموضوع في الاصل.....

سوف تكون هناك مقالة تبين أهمية اتباع مواصفات معينية في كتابة الكود....

وعلى فكرة فأنا أستخدم:

اقتباس
"أنا أيضاً مثل الأخ عبدالعليم استخدم الـPascalCase لمتغيراتي و أستخدم البتاع الهنغارية للكونترولز. "

و لكنها قديمة...

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

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

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

#10

انا في تسمية المتغيرات أول متغير أختاره test ثاني متغير testa ثالث متغيير testaa...

متغير مميز newtest أو hottest .

#11

كنت مثلك يا سراب أيام المتوسط!!! لدي بعض برامجي القديمة، لكني لا أستطيع أن أعدل عليها، لأني لا أدري ما معنى أي كلمة مكتوبة!! وكأنها مشفرة، بل أنا مستعد لأن أدفع مبلغا من المال إلى من يستطيع فهمها وإعادة صياغتها!! زد في ذلك أنها أكثر من 2000 سطر!!! لو أردت إضافة أو تعديل شيئا داخل الشفرة لأخذت وقتا أطول من أن أبدأ البرامج من جديد!!

إذا كنت فعلا هكذا فهذا يعني أنك في أول السلم! أنصحك بتغيير أسلوبك وإعطاء كل متغير باسم مناسب! :)

#12

أنا استعمل Hungarian Notation وصوت لها فهي الأفضل والأقل من حيث الأخطاء البرمجية وتبعد التشويش على المبرمج ..

كهذا المتغير يحمل رقم الهاتف : iTelNum ،، وبدأت بالحرف i لأن المتغير يحمل قيمة من النوع Integer

وكذلك الأمر بالنسبه للأداوت وكائنات واجزاء المشروع البرمجي ..

تحياتي

#13

في السابق كنت أستخدم الـ hungarian notation في كل شيء, لكني الآن حولت على طريقة الجافا ف معظم الأشياء.. الـ classes تبدأ بحرفكبير و كل كلمة تبدأ بحرف كبير مثلFileParser اما الـ methods فهكذا loadFile, بالنسبة للمتغيرات, المتغيرات الداخلية للكلاس عادة اضع قبلها m مثلا mStudentName و بالنسبة للـlocal function variables فلا أستخدم شيئ محدد, خليط من الـ camelCase و أحيانا أضع p قبلها إذا كان مؤشر أو بارامتر .. يعني, لا يوجد شيء محدد تماما.

#14

PascalCase

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#15

السلام عليكم

ربما camelCase هى الاقرب للطريقه التى استخدمها لذالك صوت لها, فانا استخدم نفس طريقة النبهاني, وهذه الطريقه هى التى يستخدمها المبرمجين فى ميكروسفت.

الطريقه ببساطه هى ان تضع اول حرف لنوع المتغير ثم تبدا بحرف capital ثم بعد ذالك حروف صغيره مثال:

szText هذا المتغير يبداء بــs لـstring وبعد ذالك z لـzero اى 0 وإسم التغير هو Text وذالك لان الــText اخر حرف فيه هو الصفر.

hHandle متغير من نوع مقبض. يبداء بh لانه من نوع handle اي مقبض وهاكذا

بالنسبه للثوابت const فإنها دائماً حروف capital العداد counter حرف واحد صغير, الــfunction والــlable تبداء بحرف capital والباقى حروف صغيره

وهناك العديد من الكتب التى تعالج هذا الموضوع لانه يعتبر من اهم المواضيع فى البرمجه, لان البرنامج الذى يكتبه مبرمج ياتى مبرمج اخر ليواصل تطويره لذالك لابد ان يتفق المبرمجين على صيغه عمل موحده.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#16

وجدت هذا الموضوع من رابط وضعه احد الاخوة فى منتدى ال ASP.NET و هو يتطرق فى احدى نقاطه لنفس موضوع التسمية

C# Coding Standards and Best Programming Practices

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#17

عادة ما أستعمل PascalCase و أضيف إليها الــ _

مثلا

CptNB_fois

#18

أتبع camelCase لأنها Java Beans Standards :lol:

#20

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

  1. سبحان الله وبحمده سبحان الله العظيم


    متى نحكم العالم زى زمان ايام اجددنا

    صلى الله على محمد صلى الله عليه وسلم



#21

أنا بقي ، فعلي حسب ال conventions بتاعت اللغه، بحب ألزم نفسي بيها جدا ؛

فمثلا ال SQL بستخدم FirstName و ممكن first_name

الجافا firstName

ال C# بستخدم FirstName

#22

اعتقد اللغة هي اللي بتحدد انا اكتب اية من ناحية الناس اللي عملوها بيكتبوا ازاي

بس انا بكتب عادة camelCase لو المتغيرمن كلمتين و بستخدم '_ ' لو المتغير كبر عن كدة

اما الكتغير من كلمة واحدة فبيكون زي Name

شارك معي و لنزد معرفتنا

articles on My Web Site

2coscqr.jpg
#23

Hungarian Notation للأدوات.

و Hungarian Notation على camelCase للمتغيرات و الثوابت ( على حسب المزاج و الكسل و هل بعمل مشروع ليا و لا مثال لعضو ما على منتدى ما ).

بس أفضل الـ Hungarian Notation لسهولة القراءة , و لتخبط مايكروسوفت راسها فى الحيط !

#24

الوضع قد يكون أعقد في السي++ بسبب المتغيرات الخارجية !

تخيل أن لديك متغير خارجي كعداد في البرنامج وستسفيد منه في مكان ما التعارضات قد تضيع الكثير من الوقت , وكل مازادت المتغيرات الخارجية (التي لايراها مبرمجو الجافا والدوت نت ذات معنى لعدم حصولهم عليها كما في السي++ :D ) كل مازادت نسبة التعارضات ,

الشيء الثاني المتغيرات الممررة للدوال والمتغيرات المعرفة داخل الدوال والمتغيرات التابعة للفئات كل له طريقة معينة :) (بالنسبة لي)

فمثلا متغيرات البارامترات للدوال lower case كمثال : firstvar

والمتغيرات المعرفة داخل الدوال أيضا lowercase لكن مع Undersocre كمثال first_var

وأسماء الدوال كلها PascalCase مثال FirstFunction

وأسماء المتغيرات الخارجية مع Underscore خلفها مثال : firstvar_

وأسماء المتغيرات التابعة للفئات PascalCase مع underscore مثال : First_Var

وأسماء ال Structs كلها UPPERCASE مثال : FIRSTSTRUCT

لكن لاأكتب نوع المتغير في إسمه كما في Hungarian Notation والسبب أني أستخدم مصرف VS2005 والذي يعطي نوع المتغير عند وضع الماوس فوقه بشكل مباشر وبعض التفاصيل الإضافية :)

وبالمناسبة لاتحاول أن تبخل على إسم متغير في طوله لأنك ستسبب لنفسك مشاكل بعد أن يطول الكود , طول الإسم كما تريد لتضع وصف شامل للمتغير الذي أنشئته مثال : container_report_enter_exit_patients

والمصرف سيكمل إسم المتغير لك ولاداعي للقلق لأنك لن تكتب أكثر من 4 أو 5 أحرف من إسم المتغير .

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#25
msayed2004 كتب:
بس أفضل الـ Hungarian Notation لسهولة القراءة , و لتخبط مايكروسوفت راسها فى الحيط !

أنت تعرف طبعاً أن مايكروسوفت هي من جعل هذا الأسلوب منتشراً في البداية أليس كذلك؟ :)

هذا الموضوع مغلق.

مواضيع مشابهة