Khaled Alshaya

هل تهتم بأناقة الكود الذي تكتبه؟

13 ردود في هذا الموضوع

السلام عليكم و رحمة الله و بركاته,

أود أن أطرح موضوعاً نتشارك فيه بالمعرفة, و لكن لا أريد أن يفهم الموضوع على أن له علاقة بالموضة و الأناقة.

ما أقصده هو هل تحاول أن تكتب الـ the most elegant code you could write

ترجمها على كيفك!

في البداية أود أن أسمع آرائكم حول تعريف أناقة الكود, و من ثم هل تهتم بذلك, و هل تعتبر أن مقروئية الكود أهم صفة فيه, على افتراض صحته بالطبع؟

ماهي أولوياتك حينما تقوم بكتابة الكود؟

و هل تختلف الأولويات في الكود الذي تكتبه في عملك أو دراستك عن الكود الذي تكتبه لشخصك الكريم كهواية؟

في النهاية, هل الـ Refactoring عملية مهمة برأيك أم أنك تتبع المثل القائل Why fix what ain't broken :sleep:

تحياتي...

7

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • أولا، يجب أن يعمل الكود
  • يجب أن يقوم بالعمل المنتظر منه بأقل موارد ممكنة
  • يجب تقسيم الكود إلى عدة methods حتى يسهل ال debugging، وإلى عدة classes أو modules
  • يجب أن يكون سهل القراءة من طرف البشر: استعمال ال indentation، استعمال أسماء لها معنى بالنسبة للمتغيرات وال methods وال classes، ترك ما يكفي من الفراغات، واستعمال ال coding style الخاص باللغة المستعملة.

هذا حسب رأيي

ال refactoring مفيد طبعا . Why not fix what won't be broken if fixed :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

في رأيي:

  • هو الكود الصحيح الذي يطبق ما تريد بالضبط (implement specifications)
  • هو الكود الواضح بمجرد القرائه بدون تعقيدات مبالغة Self-Documents
  • اضافة الى تنظيم الكود بشكل منطقي (في كلاسات أو دوال أو باجكات ) Organized Code
  • هو الكود الذي لا يعيد اختراع العجلة ويستخدم ال libraries المتوفرة بقدر الإمكان
  • هو الكود الأقل استهلاك لموارد النظام Most Efficient
  • هو الكود الذي يفحص ويتأكد من كل المدخلات ويتأكد من صحتها بقدر الإمكان ويصدر خطأ في أي حالة غير صحيحه ( Robustness Code) .

هناك أمور أخرى أفضلها قد لا تدخل ضمن الكود نفسه ولكنها ضرورية لتكوين More Elegant Software :) هي :

  • وجود Test Code مع الكود تكون مرفقة معه .
  • استخدام Logger System لتسجيل جميع تصرفات الكود
  • استخدام أي طريقة اتوماتيكية لبناء البرنامج Automatic Build System (مثل Make , Ant)
  • توثيق الكود Documents خصوصا لو كانت دوال لكي يستخدمها المبرمجين وتوليد وثائق له
  • استخدام أي من برامج الSource Control لتسهيل عملية التغيير والاضافة في الكود.

بالنسبة للRefactoring فهو عامل ضرروي جدا وخصوصا عند استخدام اسلوب OO فقد ترى أن الكلاس الحالي غير صحيح أو أن تطبيق الComposition هو أفضل من الوراثه في حالة معينة ، لذلك التغيير ضروري جدا .. عن نفسي كثير من الأحيان أقوم بتعديل الكود وقد تصل لنسبة 80% (لكن أقوم بها بعدما يعمل البرنامج وأتاكد من صحة المخرجات) .. لكن لسوء الحظ أغلب برامجي أيام الجامعه وحتى وقت المشروع لم أقم بعمل أي Refactoring وأسلمها هكذا (لأنه لا يوجد من يريد الاطلاع عليه من الأساس :) ) .

تحياتي :)

تم تعديل بواسطه Wajdy Essam
اضافة النقاط :)
4

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مرحبًا

انا شخصيًا لا اهتم كثيرًا بهذا الأمر

ولكني احيانًا او كثيرًا ما اضطر إلى ذلك عندما تكون

الأفكار عالقة في ذهني عندها الاحظ اني اضيع وقتي في تنظيم السطور :blush:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

احيانا كثيرة في برامج محددة اجد نفسي مهووسا بتنظيم اسطر الكود وتجزئتها وتسمية الكيانات حسب توجه معين..

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

تحياتي

تم تعديل بواسطه همام ابوعرقوب
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
في البداية أود أن أسمع آرائكم حول تعريف أناقة الكود,

أن يكون قابلا للقراءة و الفهم السريعين و أن يكون مريحا للعينين

بعبارة أخرى استعمال نفس الـ Pattern لكتابة أسماء الدوال و المتغيرات و تنسيق الكود بشكل يمكن في كل لحظة معرفة السطر الحالي إلى أي جهة ينتمي

من ثم هل تهتم بذلك

نعم

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

في رأيي الخوارزمية التي يعتمد على الكود أهم من الجمالية

قرأت عن كتاب يسمى Beautiful code لمن أراد معرفة المزيد عن الموضوع فليبحث عنه و ليشتره :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

استمتع عندما اجعل من سطر واحد من الكود يغنى عن العديد وربما العشرة اسطر من الكود حتى وان كان غير مفهوم

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • استخدام الـ Indention لتنظيم الكود.
  • تقسيم الكود على اى عدد من الملفات لترتيبه و تسهيل اصلاحه فيما بعد.
  • كتابة الملاحظات كل جزء اجزاء الكود التى قد تبدو مبهمه او تحتوى على معادلات يصعب فهمها.
  • اضافة documents تحتوى على شروحات للـ algorithms المستخدمه داخل مناطق معينه من الكود بدلا من كتابتها كملاحظات.
  • تحديد بيانات ملف الكود مثل تاريخ الإنشاء و من قام به و الإضافات و التعديلات و الأخطاء التى تم ايجادها و من اصلحها.
  • الـ optimization ثم الـ optimization يليها الـ optimization مع جعل الكود مقروء.
  • امكانية اعادة اختراع العجله اذا كان ذلك سيزيد من كفاءة الكود و يحقق النقطه السابقه.
  • جعل الكود portable قدر الإمكان و ذلك لإمكانية تصديره فيما بعد لأنظمة تشغيل اخرى.
  • استخدام اى Source Control اصناء العمل فى برامجى لتسهيل الرجوع لأى نقطه فى البرنامج فى اى وقت.
  • الأهم من الكود الـ Test units التى يتم عملها لهذا الكود و ذلك للتأكد من صحتها.
  • اتباع نظام معين فى كتابة الكود Code Style حتى و إن اختلف لكل مشروع و اضافة كتيب ضمن ملفات المشروع يشرح هذا النظام حتى إذا تم اضافة مبرمجين جدد للنظام يسهل عليهم فهم كيفية عمله.
  • صنع ادوات خاصه لتسهيل عملية استخلاص بعض البيانات من محتويات الكود قبل الترجمه.

الـ Refactoring هو جزء اساسى يتم على الكود لعمل تحسينات عليه حتى و إن وصلت التغييرات إلى 90% من اجمالى الكود المكتوب مع المحافظه على الواجهة الرئيسيه له كما هى.

تم تعديل بواسطه Muhammad alaa
3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اما اناقه والله يعرفها الكود :lol:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

–Martin Fowler

It's OK to figure out murder mysteries, but you shouldn't need to figure out code. You should be able to read it.

--Steve McConnell

تم تعديل بواسطه أحمد عبد المنعم
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

حين اقوم بكتابة كود جديد لاول مرة، لا اهتم كثيرا بترتيبه بل اهتم بانه يقوم بالعمل المطلوب منه

اما في ما عدا ذلك, فربما اكون مهووس obsessed باناقة الكود اكثر من اللازم, بحيث اقضي ساعات و ساعات في ترتيب الاكواد القديمة

ما ابحث عنه في الكود الانيق:

- تقليل عدد الاسطر في الـ functions

- تقليل الحاجة الى التعليقات, بحيث يكون كل شيء واضح دون الحاجة الى تعليق

- القضاء على التكرار duplicate code قدر الامكان

مثلا اقوم بتحويل المتغيرات الى functions (ليس بالضرورة فنكشنز خارجية, بل ربما lambda او inner function (في البايثون مثلا)) لان ذلك يسهل القراءة و يقلل عدد الاسطر و يقضي على التكرار ايضا!

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

آراء جميلة, رغم أني أرى بعض الاختلاف فيها, من حيث الأولويات.

فمثلاً, قيل بأن الـ Elegant Code هو أيضاً Efficient Code, و هذا أحد أوجه الأناقة. تقريباً ثلاثة ردود ركزت على هذا الأمر.

أيضاً, فكرة أن الـ Elegant Code عبارة عن Clean Design منذ البداية, بحيث يتم عمل Modularization للكود, و هذا وجه آخر للأناقة.

بالطبع, الرأي الثالث, هو أن الأناقة تعني أن الكود سهل القراءة, كما أتى الأخ أحمد عبدالمنعم بالاقتباسات الشهيرة.

الرأي الأخير, هو أنه من الصعب أن تكتب كود أنيق من أول مرة, و لكنه يأتي بالمراجعة, تماماً كما في عملية الكتابة العادية. لا أحد يستطيع أن يكتب كتاباً من جرة قلم واحدة, و إنما يأتي الأمر بالتنقيح.

رأيي الشخصي, هو نفس رأي الأخ حسن في الحقيقة, إضافة إلى أن هناك نقطة مهمة لدي. و هي أنني إذا فهمت الـ Problem Domain فإني حلي يكون أنيقاً,

بينما إذا كنت أحاول كتابة كود في مجال لا أفهمه, ففي الغالب أنني لا أحصل على "الأناقة", و إن عمل الكود.

هناك بضعة أسئلة بالطبع,

للرأي الأول, هل تعتبر أن الكود إذا كان سهل القراءة و يؤدي المطلوب, و لكنه يستنفذ موارد بحيث يمكن تحسينه, كوداً غير أنيق؟

للرأي الثاني, هل تعتقد أنه في لغات مثل الـ Assembly, حيث هناك مساحة ضيقة لعمل Modularization, لا يمكن كتابة كود أنيق؟ بعبارة أخرى,

هل تقولون بأن الكود الأنيق, هو كود تصميمه جيد, في لغة توفر لك طرق تصميم كـ OOP أو Functional Paradigm مثلاً, و غيرها؟ أليست الأناقة على مستوى Implementation نفسه, و ليس التصميم؟

تحياتي...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .