תכנות מסדר גבוה
בחינת טכניקות צנרת מבוססות מערכים וקבוצות
חקירת טכניקות צנרת מבוססות מערכים וקבוצות
אנטי-תבנית?
זוהי חקירה של יתרונות שמושגים כאשר מקודדים הכל כמערך. (באמצעות מושגי ג’דאי מ-SmallTalk)
הנה כמה עקרונות מנחים:
-
כל הקלט דמוי-מערך. אפילו מערך של 1.
-
פונקציות ברמה גבוהה צריכות בדרך כלל לקבל ולהחזיר מערכים. (למעט שיטות callback ללולאות: map/reduce/each/filter)
-
99 מתוך 100 קוד של מפתחים סובל ממה שאני מכנה תסמונת
עודף סכמה חריף. -
היזהרו ממודלים מנופחים
מגובי מחלקה- עם כל המלכודות הצפויות:מצב מופעשביר עם כל כך הרבה מנופים וכפתורים להתעסק איתם, טרנזקציות DB, נעילות SQL, async/mutexing (שתמיד עובד בפעם הראשונה), שימוש ב-property getter/settersאידיומטיים, והשימוש שלך ב-public/private/final/etcמוצק, נכון? -
אז תן לי לקחת בעיה נפוצה ו-להכניס בכוח ~~~להוסיף~~~ כמה הרהורים מבוססי קבוצות.
-
אתר בלוג היפותטי יש בו הרבה מאמרים, ויש אפילו יותר פוסטים (תגובות).
-
בוא נוסיף מתודת
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); }}סלח לי אם הג’אווה שלי קצת חלודה.