الإعلانات
بلا شك ، البرمجة صعبة. إنه شيء واحد تعلم لغات والدراسة الخوارزميات، لكنه وحش آخر بالكامل يحاول ترميز تطبيق عمل معقد لا يجعلك ترغب في مخلب عينيك.
بطريقة ما ، فإن كتابة كود نظيف يشبه إلى حد كبير الرسم أو الطهي أو التصوير الفوتوغرافي - إنها تبدو أسهل مما هي عليه في الواقع. فلماذا يزعج؟ حسنًا ، لأن الفوائد تستحق العناء:
- تصبح المشاكل أسهل في الحل. بمجرد أن تبدأ في التفكير في تعليمات برمجية نظيفة ، يتغير أسلوبك في حل المشكلات. بدلاً من الحلول القسرية ، تصبح الخوارزميات وتصميم البرامج أكثر أناقة وتعمدًا.
- يضيع وقت أقل في الصيانة. من السهل قراءة وفهم التعليمات البرمجية النظيفة ، لذلك تقضي وقتًا أقل في محاولة اكتشاف ما تفعله بعض الأجزاء فعلاً ووقتًا أطول في الإصلاح ، والمراجعة ، والتمديد ، وما إلى ذلك.
- يتم توصيل الأفكار بشكل أكثر وضوحا. إذا كنت تعمل مع مبرمجين آخرين ، فإن الشفرة النظيفة تقلل من احتمالية سوء الفهم بينكما ، مما يعني أيضًا أخطاء أقل على المدى الطويل.
إليك كيفية البدء في كتابة كود نظيف.
1. استخدم الأسماء الوصفية
ما هي المتغيرات والفئات والوظائف؟ هناك العديد من الطرق للإجابة على ذلك ، ولكن عندما تفكر في الأمر حقًا ، فإن هذه الأشياء ليست أكثر من الواجهة بين المبرمج والمنطق الأساسي لتطبيق ما.
لذلك عندما تستخدم أسماء غير واضحة وغير وصفية للمتغيرات والفئات والوظائف ، أنت في الأساس تشوش منطق التطبيق من أي مبرمج يقرأ الشفرة، بما في ذلك نفسك.
"لست مبرمجًا رائعًا ، أنا مبرمج جيد وعادات رائعة ".
- كينت بيك
ماذا يفعل متغير اسمه DXY
يعني في الواقع؟ من تعرف. ربما ستضطر إلى قراءة مجموعة التعليمات البرمجية بالكامل لتعكس هندسة معانيها. من ناحية أخرى ، معنى متغير مثل المسافة بين XY
يمكن التعرف عليها على الفور.
وينطبق الشيء نفسه على الفئات والوظائف. لا تقبل كالك تان ()
عندما يمكنك الذهاب حساب المماس ()
أو CalcTangentAngle ()
في حين أن.
2. أعط كل فئة / وظيفة غرض واحد
هل سبق لك أن تلقيت نظرة خاطفة على دالة كان طولها مئات أو حتى آلاف الخطوط؟ إذا كان لديك ، فأنت تعرف مقدار الألم الذي قد يصعب تصفحه وفهمه وتعديله. التعليقات يمكن أن تساعد ولكن بدرجة محدودة فقط.
"البرمجة تقسم مهمة كبيرة مستحيلة إلى عدة مهام صغيرة محتملة."
- جازوانت
يتم تقسيم كود نظيف إلى قطع ذرية. يجب أن تهدف كل وظيفة إلى القيام بشيء واحد ، ويجب أن تهدف كل فئة إلى تمثيل مفهوم واحد محدد. هذا تبسيط بالطبع ، ولكن عندما تكون في شك ، فالأبسط أنظف.
في الممارسة العملية ، مثل حساب معقد GetCreditScore ()
قد تحتاج إلى تقسيمها إلى عدة وظائف مساعدة مثل GetCreditReports ()
, ApplyCreditHistoryAge ()
و FilterOutstandingMarks ()
.
3. حذف الرمز غير الضروري
هذه العادة السيئة هي تلك التي ما زلت أعاني منها من وقت لآخر. عادةً ما يحدث مثل هذا: أريد إصلاح أو تحسين جزء من التعليمات البرمجية ، لذلك أعلق عليه وأقوم بإعادة كتابته تحته - وعلى الرغم من أنه يعمل ، فأنا أبقي الرمز القديم هناك في حالة الضرورة.
"هل من الممكن ألا يكون البرنامج مثل أي شيء آخر ، وأنه من المفترض التخلص منه: أن النقطة الأساسية هي رؤيته دائمًا على أنه فقاعة صابون؟"
- آلان ج. برليس
بمرور الوقت ، أقوم بتجميع الكثير من كتل التعليمات البرمجية التي تم التعليق عليها والتي لم تعد هناك حاجة إليها بعد فوضى الملفات المصدر الخاصة بي. والشيء المضحك هو أنه في كثير من الحالات ، تطورت الشفرة المحيطة بحيث لا تعمل الشفرة التي تم التعليق عليها حتى إذا تمت استعادتها.
الشيء هو أن ممارسة التعليق على "رمز النسخ الاحتياطي" أصبحت قديمة من قبل التحكم بالمصادر. إذا كنت لا تستخدم شيئًا مثل Git أو Mercurial ، فأنت بحاجة إلى ذلك ابدأ في استخدام التحكم بالمصادر على الفور. كود الأنظف في انتظارك.
تذكر أنه من المهم أيضًا تجنب كتابة شفرة مكررة ، والتي يمكنك إنجازها بسهولة باستخدام إطار ويب. وهنا عدد قليل أطر الويب تستحق التعلم كمطور 5 أطر ويب تستحق التعلم للمطورينهل أنت مهتم بتعلم تطوير الويب المتقدم؟ تجنب كتابة التعليمات البرمجية المتكررة استخدم أطر تطوير الويب هذه بدلاً من ذلك. اقرأ أكثر .
4. قراءة> ذكاء
الكثير من المبرمجين يخلطون بين "الشفرة النظيفة" و "الشفرة الذكية" ، كما لو كان ضغط عشرة أسطر في واحد أنظف بطريقة أو بأخرى. بالتأكيد ، تشغل مساحة أقل على الشاشة ، ولكن هل يسهل فهمها بالفعل؟ في بعض الأحيان ، ربما. لكن في أغلب الأحيان؟ لا.
"يعلم الجميع أن تصحيح الأخطاء هو ضعف صعوبة كتابة برنامج في المقام الأول. لذا إذا كنت ذكيًا بقدر ما تستطيع عندما تكتبه ، فكيف ستقوم بتصحيحه؟ "
- بريان و. Kernighan
أعتقد أن المبرمجين يحبون كود ذكي لأنه يبدو وكأنه لغز أو لغز. لقد وجدوا طريقة خاصة وفريدة لتنفيذ شيء ما - "اختصار" إن شئت - وهو يكاد يكون بمثابة التحقق من مهارات المبرمج.
ولكن لكتابة كود نظيف ، تحتاج إلى ترك نفسك عند الباب.
قم دائمًا بتحسين الرمز للشخص التالي الذي سيقرأه ، لأنه في جميع الاحتمالات يكون الشخص التالي في الواقع ستكون أنت وليس هناك شيء مخجل أكثر من عدم القدرة على قراءة أو فهم خاصتك ذكاء.
5. احتفظ بنمط ترميز متسق
لدي لا شيء ضد دروس البرمجة الجيدة ما الذي يجعل دروس البرمجة جيدة؟ليست كل دروس البرمجة متساوية. البعض يفيدك أنت والآخرون في نهاية المطاف إضاعة وقتك. إليك ما تبحث عنه في برنامج تعليمي عالي الجودة. اقرأ أكثر ، ولكن أحد الجوانب السلبية هو أن المبتدئين ينتهي بهم الأمر إلى التقاط مجموعة واسعة من العادات المتضاربة ، خاصةً فيما يتعلق بنمط الترميز.
لست هنا لأعلن أن أحد الأنماط أفضل من الآخر. إذا كنت تريد وضع تقويم الأسنان على الخطوط الخاصة بها ، فابحث عنها. إذا كنت تريد أن تسبق استدعاءات الطريقة بمسافات ، فلا بأس. إذا كنت تفضل علامات التبويب على المسافات ، فلا تدعني أقنعك بخلاف ذلك.
ولكن مهما فعلت ، ابق ثابتًا!
الجميل أفضل من القبيح.
صريح أفضل من ضمني.
بسيط هو أفضل من المجمع.
المركب أفضل من المعقد.
الشقة أفضل من التداخل.
متفرق أفضل من الكثيفة.
تهم القراءة.
- تيم بيترز ، زن بايثون
إذا كنت ستستخدم camelCaseNaming
للمتغيرات ، لا تغش بها تسطير سفلي
. إذا كنت تستخدم GetThisObject ()
في مكان واحد ، لا تذهب الجلب ()
مكان آخر. وإذا قمت بخلط علامات التبويب والمسافات ، فأنت تستحق أن تأخذ لوحة المفاتيح.
قرر ما ستفعله منذ البداية والتزم به خلاله ومن خلاله. تحتوي بعض اللغات ، مثل Python و C # ، على أدلة نمط على مستوى اللغة قد ترغب في متابعتها.
6. اختر العمارة الصحيحة
هناك العديد من النماذج والمعماريات المختلفة التي يمكنك استخدامها لإنشاء مشاريعك. لاحظ كيف يكون هذا التلميح حول اختيار حق واحد لاحتياجاتك ، وليس حول اختيار الأفضل واحد هناك. ليس هناك "أفضل" هنا.
"بدون متطلبات وتصميم ، فإن البرمجة هي فن إضافة الأخطاء إلى ملف نصي فارغ."
- لويس سريجلي
على سبيل المثال ، يعد نموذج Model-View-Controller (MVC) شائعًا جدًا الآن في تطوير الويب لأنه يساعد على إبقاء الشفرة منظمة ومصممة بطريقة تقلل من جهود الصيانة.
وبالمثل ، فإن نمط Entity-Component-System (ECS) شائع جدًا الآن في تطوير اللعبة لأنه يساعد على تعديل بيانات اللعبة والمنطق بطريقة تجعل الصيانة أسهل ، كل ذلك أثناء إنتاج التعليمات البرمجية التي يسهل عليها اقرأ.
7. إتقان تعابير اللغة
واحدة من الصعوبات في إتقان لغة برمجة جديدة 7 حيل مفيدة لإتقان لغة برمجة جديدةلا بأس في أن تغمر نفسك عندما تتعلم البرمجة. ربما ستنسى الأشياء بنفس السرعة التي تتعلمها بها. يمكن أن تساعدك هذه النصائح في الاحتفاظ بجميع هذه المعلومات الجديدة بشكل أفضل. اقرأ أكثر هو تعلم الفروق الدقيقة التي تفصلها عن جميع اللغات الأخرى. يمكن أن تكون هذه الفروق الدقيقة هي الفرق بين الشفرة القبيحة والمعقدة والرمز الجميل سهل الصيانة.
ضع في اعتبارك Python و Java و JavaScript. كلهم مختلفون للغاية عن بعضهم البعض ، إلى درجة تتطلب طريقة تفكير مختلفة اعتمادًا على اللغة التي تختار استخدامها.
"اللغة التي لا تؤثر على طريقة تفكيرك في البرمجة لا تستحق المعرفة".
- آلان ج. برليس
في حين أن Python تدور حول التعليمات البرمجية المدمجة وكتابة البطة ، فإن Java أكثر نحو جانب الإسهاب والصراحة. كل لغة لها مصطلحات (مثل فهم القوائم في Python) التي تشجع على طريقة معينة في الترميز. من الأفضل أن تتعلمهم.
هناك أيضًا "نماذج مضادة" للقلق ، وهي في الأساس أنماط تصميم دون المستوى الأمثل تؤدي إلى كود غير فعال أو غير موثوق به أو غير صحيح. ادرس واكتشف كل الأنماط الشائعة المضادة للغة التي تختارها.
8. دراسة قانون الماجستير
إذا كنت ترغب في كتابة رمز نظيف ، فإن أفضل شيء يمكنك القيام به هو رؤية شكل الرمز النظيف ومحاولة ذلك نفهم لماذا هي على هذا النحو - وليس هناك طريقة أفضل للقيام بذلك من دراسة ملفات المصدر سادة الصناعة.
من الواضح أنه لا يمكنك فقط الدخول إلى مقر Microsoft وإلقاء نظرة خاطفة على مشاريعهم ، ولكن يمكنك دائمًا تصفح مشاريع معروفة مفتوحة المصدر كيفية عرض وتحرير التعليمات البرمجية المصدر لتطبيق مفتوح المصدربينما قد يكون الذهاب إلى المصدر المفتوح خيارًا جيدًا ، ستحتاج أيضًا إلى الاستثمار في المجتمع المناسب. GitHub هي واحدة من أفضل الأماكن للقيام بذلك ، ليس فقط بسبب الكم الهائل ... اقرأ أكثر . لا تعرف من أين تبدأ؟ جرب ال عرضت المشاريع على جيثب.
"يمكن لأي أحمق كتابة التعليمات البرمجية التي يمكن للكمبيوتر فهمها. المبرمجون الجيدون يكتبون كودًا يمكن للبشر فهمه ".
- مارتن فاولر ، إعادة الهيكلة: تحسين تصميم الكود الحالي
بعد كل شيء ، هذا هو أحد الأسباب لماذا توجد مشاريع مفتوحة المصدر لماذا يساهم الناس في مشاريع مفتوحة المصدر؟تطوير المصادر المفتوحة هو مستقبل البرمجيات. إنه أمر رائع للمستخدمين لأن البرامج مفتوحة المصدر متاحة عادة مجانًا وأكثر أمانًا للاستخدام في كثير من الأحيان. ولكن ما الذي يجبر المطورين على المساهمة بالكود مجانًا؟ اقرأ أكثر : حتى يتمكن الآخرون من التعلم منهم. وإذا قررت المساهمة في مثل هذا المشروع ، يمكنها تسريع عملية التعلم 5 أفكار للمشاريع لمساعدتك على تعلم البرمجة بشكل أسرعهناك عدة طرق لتسهيل منحنى التعلم للبرمجة. اجعل يديك متسخين وتعلم بشكل أسرع مع المشاريع الجانبية التي يمكنك البدء بها في أي وقت. العب مع هؤلاء الخمسة. اقرأ أكثر .
شخصيًا ، أول مرة رأيت فيها كودًا نظيفًا حقًا هي عندما عثرت على مشروع Python مفتوح المصدر لأحد الهواة. كان الرمز أنيقًا للغاية لدرجة أنني توقفت تقريبًا عن البرمجة ، ولكن انتهى بي الأمر بتعليمي كثيرًا.
9. اكتب تعليقات جيدة
"كتابة تعليقات جيدة" هي أقدم نصيحة في عالم البرمجة. في الواقع ، بمجرد تقديم المبتدئين للتعليقات ، يتم تشجيعهم كثيرًا على التعليق قدر الإمكان.
لكن يبدو الأمر تقريبًا وكأننا قد تحركنا بعيدًا جدًا في الاتجاه المعاكس. يميل المبتدئون ، على وجه الخصوص ، إلى الإفراط في التعليق - يصفون الأشياء التي لا تحتاج إلى وصف ويفقدون نقطة ما هو "تعليق جيد" بالفعل.
"قم دائمًا بالتشفير كما لو كان الشخص الذي ينتهي به الأمر للحفاظ على التعليمات البرمجية سيكون مريضًا نفسيًا عنيفًا يعرف أين تعيش"
- جون وودز
إليك قاعدة عامة جيدة: توجد التعليقات لتوضيح سبب وجود جزء من الرمز بدلاً من ما يوجد بالفعل في الرمز. إذا كانت الشفرة مكتوبة بشكل نظيف بما فيه الكفاية ، فيجب أن تكون ذاتية التفسير فيما تفعله - يجب أن يسلط التعليق الضوء على النية وراء سبب كتابته.
يمكن أن تكون التعليقات جيدة للتحذيرات (أي "إزالة هذا سيؤدي إلى كسر A و B و C") ولكن في الغالب يجب اكتشف الأشياء التي لا يمكن استخلاصها على الفور من الشفرة (أي "استخدم هذه المعلمة لأن X و Y و Z ").
10. ريفاكتور ، ريفاكتور ، ريفاكتور
مثلما يعد التحرير جزءًا من عملية الكتابة ، فإن إعادة البناء هي جزء من عملية الترميز. إن النفور من إعادة البيع هو أسرع طريقة للحصول على كود لا يمكن الحفاظ عليه ، لذلك يعد هذا في الواقع من أهم الطرق التي يجب مراعاتها.
باختصار ، إن إعادة الهيكلة هي مجرد مصطلح رائع لتنظيف الرمز دون التأثير على سلوكه الفعلي.
"كلما كان عليّ التفكير في فهم ما يفعله الرمز ، أسأل نفسي ما إذا كان بإمكاني إعادة صياغة الرمز لجعل هذا الفهم أكثر وضوحًا على الفور."
- مارتن فاولر ، إعادة الهيكلة: تحسين تصميم الكود الحالي
بعض الحكمة التي تعلق بي هي القول ، "لا تعلق على كود سيئ. أعد كتابته ". كما يشرح فاولر في الاقتباس أعلاه ، إذا شعرت التعليمات البرمجية بالحيرة من حيث أنها مربكة بما يكفي بحيث تحتاج إلى التعليق عليها ، فقد تحتاج بالفعل إلى إعادة تشكيلها.
علاوة على ذلك ، أثناء تعديل أجزاء من التعليمات البرمجية هنا وهناك طوال مشروعك ، دائمًا ترك الشفرة في حالة أفضل مما كانت عليه عندما وجدتها لأول مرة. قد يبدو الأمر مزعجًا في الوقت الحالي ، لكنه سيؤتي ثماره على المدى الطويل (ويمكن حتى درء الإرهاق العقلي نضوب البرمجة: كيفية استعادة الدافع المفقوديمكن أن تستنزف كتابة جميع أسطر التعليمات البرمجية هذه جسديًا وعاطفيًا. كل ما تحتاجه للاستعادة هو الوعي بأنه يمكن استعادة التحفيز. اقرأ أكثر ).
هناك دائمًا شيء جديد لتتعلمه
المبرمج الذي يتعلم كيفية كتابة شفرة نظيفة هو أقرب إلى الروائي الذي يتعلم كيفية كتابة النثر النظيف: لا توجد طريقة صحيحة للقيام بذلك في حد ذاتها ، ولكن هناك الكثير من الطرق الخاطئة للقيام بذلك ، وسيستغرق الأمر سنوات رئيس.
بعض الناس ليس لديهم ما يلزم و في نهاية المطاف إنهاء البرمجة للأبد 6 علامات تشير إلى أنه ليس من المفترض أن تكون مبرمجًالا يتم قطع الجميع ليكون مبرمجًا. إذا لم تكن متأكدًا تمامًا من أنه من المفترض أن تكون مبرمجًا ، فإليك بعض العلامات التي قد توجهك في الاتجاه الصحيح. اقرأ أكثر - وهذا جيد لأن هناك الكثير منها وظائف فنية أخرى لا تتضمن الترميز الترميز ليس للجميع: 9 وظائف تقنية يمكنك الحصول عليها بدونهالا تثبط عزيمتك إذا كنت تريد أن تكون جزءًا من مجال التكنولوجيا. هناك الكثير من الوظائف للأشخاص بدون مهارات الترميز! اقرأ أكثر . ولكن بالنسبة إلى أي شخص آخر ، يعد الرمز النظيف شيئًا يستحق السعي نحوه تمامًا ، حتى لو استغرق الأمر بقية حياتك للوصول إلى هناك.
جويل لي لديه بكالوريوس. في علوم الكمبيوتر وأكثر من ست سنوات من الخبرة في الكتابة المهنية. وهو رئيس تحرير MakeUseOf.