كود نظيف: مطور ذكي مقابل مطور محترف

كود نظيف: مطور ذكي مقابل مطور محترف باستخدام أمثلة كود سكالا

يوجد اليوم العديد من أنواع المطورين ، بشهادة مهندس أو بدونها ، والكثير من الناس يكتبون رمزًا للعيش و / أو المتعة.

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

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

المطورين الذكية

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

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

المطورين المحترفين

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

الوضوح هو الملك!

سكالا أمثلة رمز نظيفة

لنلقِ نظرة على بعض أمثلة كود الشفرة التي تميز المطور المحترف عن مجرد مثال ذكي:

المطور الذكي:

يمتد سمة SocketFactory (SocketAddress => المقبس)

المطور المحترف:

اكتب SocketFactory = SocketAddress => المقبس

SocketFactory هي وظيفة تنتج Socket. من الأفضل استخدام اسم مستعار للنوع في هذه الحالة ، ويمكن إعادة استخدامه وقراءته.

إنشاء مجموعات في scala:

المطور الذكي:

scala.collection.mutable._
مجموعة فال = مجموعة ()

المطور المحترف:

استيراد scala.collection.mutable
مجموعة val = mutable.Set ()

في المثال الثاني ، من السهل فهم نوع المجموعة المستخدمة ، وهذا عادة ما يكون مهمًا عند إنشاء واجهات برمجة التطبيقات في النطاق.

عند الإعلان عن معلمات جديدة ، من الأفضل إضافة النوع أيضًا ، وبهذه الطريقة يكون الأمر أكثر وضوحًا:

var set: mutable.Set [String] = mutable.Set ()

تعبير لامدا الهوى:

المطور الذكي:

val votes = Seq (("scala"، 1)، ("java"، 4)، ("scala"، 10)، ("scala"، 1)، ("python"، 10))
فال OrderVotes = الأصوات
  .groupBy (_._ 1)
  .map {case (والتي ، تهم) =>
  (والتي ، counts.foldLeft (0) (_ + _._ 2))
  } .toSeq
  .sortBy (_._ 2)
  .عكس

المطور المحترف:

val votes = Seq (("scala"، 1)، ("java"، 4)، ("scala"، 10)، ("scala"، 1)، ("python"، 10))
val votesByLang = votes.groupBy ({case (lang، _) => lang})
val sumByLang = votesByLang.map (
{case (lang، counts) =>
       val countsOnly = counts.map ({case (_، count) => count})
       (lang ، countsOnly.sum)
})
فال OrderVotes = sumByLang.toSeq
.sortBy ({case (_، count) => count})
.عكس

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

معرفة متى يجب استخدام الاسم المستعار للنوع:

المطور الذكي:

اكتب IntMaker = () => Int
IntMaker

المطور المحترف:

الطبقة المتزامنة [K، V] {
اكتب قائمة الانتظار = ConcurrentLinkedQueue [V]
اكتب الخريطة = ConcurrentHashMap [K ، قائمة الانتظار]
...
}

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

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

بعض المعلومات حول الكلمة الأساسية نوع سكالا:

الكلمة الرئيسية سكالا

  • يمكن للكلمة المفتاحية للكتابة في Scala أن تفعل أكثر من مجرد الاسم المستعار للنوع المعقد إلى اسم أقصر. يقدم أعضاء النوع. يسمح Scala أيضًا للفصل بأن يكون لديه أعضاء كتابة. يستبدل نظام الكتابة الاسم المستعار بالنوع الفعلي فقط عند إجراء فحص النوع.
  • يمكن أيضًا عرض أعضاء الكتابة على أنهم ثنائيي النوع لأن العديد من الأشياء التي يمكنك تنفيذها باستخدام الأدوية يمكن ترجمتها إلى أعضاء نوع تجريدي.

مثال

قاعدة السمات
  اكتب T

  طريقة def: T
}

تنفيذ فئة يمتد قاعدة {
  اكتب T = كثافة العمليات

  طريقة def: T = 42
}

الكتابة هي ميزة قوية ، لمزيد من التفاصيل انقر هنا.

آمل أن ترشدك هذه الأمثلة على طول الطريق. تذكر أن رمز الإنتاج هو كل ما يتعلق بقابلية القراءة والصيانة.

الوجبات السريعة

  • أعلن أنواع المعلمات الخاصة بك
  • لا تغضب من وظائف lambda
  • استخدم نوع الكلمة عند الحاجة
  • الوضوح هو الملك!

اتبعني على "متوسط" للحصول على المزيد من المشاركات حول Scala ، والرمز النظيف وبرامج مهندسي الهراء. في صحتك !