البرمجة عالية الرتبة
استكشاف تقنيات خطوط الأنابيب القائمة على المصفوفات والمجموعات
استكشاف تقنيات خط الأنابيب القائمة على المصفوفات والمجموعات
نمط مضاد؟
هذا استكشاف للمزايا التي تتحقق عندما تقوم بترميز كل شيء كمصفوفة. (باستخدام مفاهيم الجيداي من SmallTalk)
إليك بعض المبادئ التوجيهية:
-
كل المدخلات تشبه المصفوفة. حتى لو كانت مصفوفة من عنصر واحد.
-
الدوال عالية المستوى يجب أن تقبل وتعيد مصفوفات بشكل عام. (باستثناء دوال الاستدعاء للحلقات: map/reduce/each/filter)
-
99 من أصل 100 مبرمج يعانون مما أسميه متلازمة
acute schema surplusage. -
احذر من
class-backed modelsالمنتفخة - بكل ما تحمله من سمات متوقعة:instance stateهش مع العديد من المقابض والأزرار للعبث بها، معاملات قاعدة البيانات، أقفال SQL، المزامنة/الاستبعاد المتبادل (التي تعمل دائمًا من أول مرة)، استخدامproperty getter/settersالاصطلاحية، واستخدامك لـpublic/private/final/etcمتين، أليس كذلك؟ -
لذا دعوني آخذ مشكلة شائعة وأقحم ~~~add~~~ بعض التأملات القائمة على المجموعات.
-
موقع مدونة افتراضي يحتوي على الكثير من المقالات، وحتى المزيد من المشاركات (التعليقات).
-
دعنا نضيف طريقة
delete(أدناه) - ولكن مع دعم لكل من المفرد أو المصفوفات.
package net.danlevy.why.java___why.you.got.all.the.dots____it.must.be.all.the.factories;
public class Post { public String title; public Date created; public String message;
public Post(String title, String message) { this.title = title; this.message = message; this.created = new Date(); }
public Date isArchived() { return this.created < new Date(2015, 0, 1); }
// Post.delete` can be called w/ a singular Post or an array of Post[] public static int delete(Post post) { List<Post> posts = new List<Post>(post); return delete(posts) }
public static int delete(List<Post> posts) { return posts.map(Dao.remove); }}سامحني إذا كانت لغة الجافا لديّ صدئة قليلاً.