سؤال

حتى لقد استخدمت خربشات/lp وحدة لكتابة أول القراءة والكتابة باستخدام برنامج plt-مخطط:

#lang scribble/lp
(require scribble/lp)

<<lp_scheme.ss>>

@chunk[<squarefunction>
        (define (f x)
         (* x x))]

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

هل كانت مفيدة؟

المحلول

(أنا أفترض أنك تستخدم تعريف دونالد نوث لبرمجة القراءة والكتابة.)

الفرق الرئيسي هو واحد من تسلسل.

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

لتوضيح:

  • يجب التعبير عن جميع الكود للحصول على فئة معينة في مكان واحد
    (أو في عدد قليل جدا من الأماكن، مثل فئات C # الجزئية)
  • يجب تقديم جميع الكود لطريقة واحدة في إحدى المرء، بالترتيب الصحيح للتنفيذ
  • يجب إعلان التبعيات قبل الأشياء المعتمدة عليهم
    (المتغيرات المعلنة قبل الاستخدام في معظم اللغات؛ الإجراءات / الوظائف المعلنة قبل الاستخدام في Pascal؛ جمعية المكتبة التي تم تجميعها قبل الآخرين في .NET)

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

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

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

نصائح أخرى

الدافع الرئيسي، كما هو الحال بالنسبة لي، هو أن كل مبرمج يستخدم ورقة / دفتر ملاحظات على بنية "تصميم"، وتطوير الأفكار، هناك يكتب المخططات، المخططات، جرب بعض الرياضيات وهلم جرا. بعد الانتهاء من البرنامج، تضيع كل هذه الملاحظات / ورقة الورق، لذلك فإن دعم البرنامج ينزل. كتبت عن هذا في Wiki من أداة LP الخاصة بي Nanolp: http://code.google.com/p/nano-lp/wiki/aboutlp..

الدافع الثاني، وليس صراحة، هو البق أقل. ولكن هذا ليس شيئا "نظريا"، فهو تجربة حقيقة (بالنسبة لي) - عندما كنت تفكر "على الورق، رسم المخططات، مخططات الخوارزميات - سيكون البرنامج الخاص بك أخطاء أقل. LP هو مثل "ورقة"، لا شيء آخر.

هناك العديد من المطورين، الذين يرسمون شيئا لا يرسمون أبدا، ولا تعليقات حتى (!)، يكتبون البرنامج فقط ... رهيب!

و LP يساعدك على خلق وثائق جيدة (وليس بطريقة رسمية - وصف في الوظائف، وهو Args، وما الذي يعود، وبالتأكد من أن هذا جيد معروف بتوقيع الوظيفة، فلماذا هناك حاجة إلى مثل هذه الوثائق؟)، لكنها تساعد على ذلك اكتب الوثائق الفعلية الحقيقية مع الدلالة، مع الصور، مع وصف الإجراءات الحقيقية ...

العديد من الدوافع :) ومن المؤكد في بعض الأحيان من الأفضل استخدام LP عكس فقط (Doxygen، على سبيل المثال)، وأحيانا - LP LP، يعتمد على العديد من العوامل.

القراءة والكتابة البرمجة على أساس ثلاثة عبارات بسيطة:

  1. المبرمجين يجب كتابة التعليمات البرمجية التي يمكن للكمبيوتر فهمها
  2. المبرمجين يجب كتابة الوثائق التي يمكن للناس أن يفهموا
  3. إذا كانت هذه هي وثائق منفصلة فإنه لا مفر من أن أنها سوف تكون خارج المزامنة

في الواقع, في تجربتي, #2 يحصل عادة لا ترقى إلى المستوى المطلوب.لقد فقدت العد من عدد المرات QA وقد قال لي "الطبيب يقول هذا ، ولكن رمز يفعل ذلك ؛ هو رمز غير صحيحة أو الطبيب خارج التاريخ؟" لا أتوقع مكان عملي هو خارج عن المألوف في هذا الصدد.بالإضافة إلى ذلك, في واحدة من بلدي المشاريع في وقت مبكر ، كنت أحاول الحفاظ على مستندات ما يصل إلى تاريخ ذهابا وإيابا مع أصحاب المصلحة أدى إلى المتطلبات المتغيرة.هذا فيه مضيعة للوقت أن قيل لي من الإدارة لوقف العبث مع مستندات فقط على المشروع العمل.لقد ذهبت إلى أقل مملة عمليات التوثيق ، منذ ذلك الحين (الحمد لله!).

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

بكثير من عقلية البرمجة الحديثة هو أن التعليمات البرمجية الخاصة بك يجب أن تكون الوثائق.العديد من المحللين يقولون أنه إذا كنت تجد نفسك بحاجة لشرح التعليمات البرمجية الخاصة بك في التعليقات, ربما يجب عليك إعادة رمز (تغيير متغير/أسماء الوظائف ، إلخ.) هذه التعليقات هي غير الضرورية.أجد أن هذا كبيرة من الناحية النظرية ، أقل العملية في الواقع.أعني عندما أنا باستخدام المكتبات التي تم إنشاؤها/صيانة من قبل شخص آخر ، اختيار طريقة/عمل أسماء ليست دائما بديهية بالنسبة لي.على سبيل المثال:

Set<String> statesWeCareABout = new HashSet<String>(Arrays.asList(new String[] { "one", "two", "three" }));
Set<String> statesWeFound = <some function>;
statesWeFound.retainAll(statesWeCareAbout);

إذا كنت لم تكن مألوفة مع مجموعة<> أو HashSet<> قد لا تعرف ذلك .retainAll() يعني تعطيني تقاطع اثنين ، مع النتيجة في تعديل مجموعة<>.

وأخيرا القراءة والكتابة البرمجة عادة يتيح لك كسر الأمور حتى أن كنت يمكن أن يفسر هذا قطعة من التعليمات البرمجية في العزلة ، ثم في سطر إلى آخر قطعة من التعليمات البرمجية.هذا هو أكثر في خط مع كيفية فهم الإنسان يعمل.اشرح لي كيف يعمل هذا ، ثم بناء على هذا الفهم لشرح الصورة الأكبر.أجهزة الكمبيوتر لا حقا الرعاية ؛ يمكنك كتابة وظيفة واحدة مع 1 ، 000 خطوط من التعليمات البرمجية ومن لديه مشكلة في فهم كل شيء.كان الله في عونك أنا لست المطور, لديك للحفاظ على ذلك.

وهذا هو المنطق وراء القراءة والكتابة البرمجة.رمز سوف تحتاج إلى الحفاظ عليها ، سواء كان ذلك الخلل كونها ثابتة أو الميزات التي تضاف.وإذا كان لا يمكن فهمه من قبل شخص آخر, في وقت لاحق, في كفاءة الأزياء ، وسيتم استبداله.هناك طريقة الكثير من "الكتابة فقط" رمز في هذا العالم.القراءة والكتابة البرمجة يجعلها أسهل في القراءة والفهم ، مما يجعل من المرجح أن تبقى واستخدامها على المدى الطويل.

و هل حقا لديك الوقت للحفاظ على إعادة اختراع العجلة ؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top