אודות
מה זה האתר הזה
שכבת הפשטה הוא אתר תוכן עצמאי בעברית על תכנון תוכנה: תבניות העיצוב של ספר ה-Gang of Four (יצירה, מבנה והתנהגות), עקרונות SOLID, תכנון מונחה עצמים, UML ותרשימים, ארכיטקטורת מיקרו־שירותים ותכנון API. הוא נכתב למפתחים שכבר כותבים קוד ורוצים להבין למה חלק ממנו קל לשנות וחלק לא, ולמי שנתקל בשם של תבנית בסקירת קוד ורוצה לדעת מה בדיוק מסתתר מאחוריו.
העיקרון שמנחה כל מאמר: מתחילים מבעיה שמישהו באמת פוגש, מראים את התבנית שפותרת אותה, ואומרים במפורש מה היא עולה. לתבנית יש מחיר — עוד מחלקות, עוד הפניות, עוד שמות לזכור — ומאמר שלא מזכיר את המחיר מספר רק חצי מהסיפור.
מה האתר הזה איננו
האתר אינו קורס ואינו מוסד לימודים. אין כאן תוכנית לימודים, תעודות, מטלות או ציונים, ואיננו קשורים לשום אוניברסיטה, מכללה או בוטקאמפ.
האתר אינו מלמד שפת תכנות. הדוגמאות כתובות בעיקר ב-Java, עם מקבילה קצרה בפייתון, והן קיימות כדי להמחיש רעיון תכנוני. מי שמחפש מבוא לתחביר של שפה, הדרכה על כלי פיתוח או תרגול בסיסי — ימצא מקורות טובים יותר במקום אחר.
האתר אינו מוכר דבר. איננו מציעים ייעוץ ארכיטקטורה, סקירות קוד בתשלום, הדרכות לצוותים, ספרים או קישורי שותפים, ואיננו מפרסמים מודעות דרושים או הכנה לראיונות עבודה.
איך הדוגמאות נכתבות
כשמאמר מציג מימוש מלא של תבנית ב-Java, זה קובץ שלם אחד שאפשר להעתיק לקובץ בשם Main.java, לקמפל ולהריץ. במאמרים על תבניות GoF המרכזיות שמציגים מימוש מלא, ובמאמר המבוא, הקוד — ב-Java ובפייתון 3 — קומפל והורץ בזמן הכנת המאמר, והפלט שמופיע בהם הוא הפלט שהתקבל. בשאר המאמרים הדוגמאות קצרות יותר ונועדו להמחשה, ולא כולן הורצו לפני הפרסום, ולכן כדאי להריץ אותן בעצמכם. אין בדוגמאות ספריות חיצוניות, מסגרות עבודה או הגדרות סביבה, כי כל אלה היו מסתירים את המבנה שהדוגמה אמורה להראות.
ההגדרות עצמן נכתבות לפי הספרות המקובלת, ובראשה הספר Design Patterns: Elements of Reusable Object-Oriented Software של Gamma, Helm, Johnson ו-Vlissides מ-1994. כשמאמר כאן מתאר תבנית, שמות המשתתפים ותפקידיהם הם אלה שבספר. כשאנחנו מציגים וריאציה מודרנית — Builder שוטף, למשל, שאינו מופיע בספר בצורה הזו — אנחנו אומרים זאת במפורש, ולא מציגים אותה כהגדרה המקורית.
הקוד באתר אינו קוד ייצור. הוא מוותר בכוונה על טיפול מלא בשגיאות, על בטיחות בין חוטים ועל אופטימיזציה, כדי שהמבנה יישאר גלוי. לפני שמעבירים רעיון ממנו למערכת אמיתית, כדאי לבדוק אותו בסביבה שלכם ולהתאים אותו לדרישות שלה.
הכותבים
רועי פרידמן כותב על תבניות העיצוב של GoF ועל תקשורת בין אובייקטים. הוא אינו מרצה באוניברסיטה, אינו יועץ ארכיטקטורה ואינו מגייס. במאמרים שלו כל תבנית מוצגת עם מימוש מלא, ועם הסבר על המקרים שבהם היא לא שווה את המחיר.
ליאת שגיא כותבת על SOLID, תכנון מונחה עצמים, UML, מיקרו־שירותים ותכנון API. היא אינה ארכיטקטית מוסמכת ואינה נציגה של חברה או של קורס. המאמרים שלה מסבירים החלטות תכנון עם יתרונות, חסרונות ודוגמה לפני ואחרי.
המאמרים מוכנים בעזרת כלים דיגיטליים, ובהם בינה מלאכותית. הפירוט — מה נבדק בקוד ומה לא, ומאילו מקורות — נמצא במדיניות התוכן והשקיפות.
מצאתם טעות?
במאמרים על תבניות, טעות קטנה בהגדרה היא טעות גדולה. אם מצאתם דוגמה שלא מתקמפלת, פלט שלא תואם, או תיאור שסותר את הספרות — כתבו לנו דרך עמוד יצירת הקשר, עם שם המאמר ומה ראיתם. דיווח כזה עוזר לתקן את המאמר. איננו עונים על בקשות לסקור קוד פרטי או לפתור תרגילים.
על הכתובת
הכתובת designpattern.co.il שימשה בעבר פרויקט הדרכה באנגלית בנושא דומה, שאינו פעיל עוד. האתר הנוכחי הוא אתר חדש בעברית: הוא אינו ההמשך של אותו פרויקט, אינו ארכיון שלו, ואין לו קשר לכותביו או לכל גוף שפעל בכתובת הזו בעבר. אם הגעתם מקישור ישן לעמוד של תבנית מסוימת, הועברתם למאמר שלנו על אותה תבנית — מאמר שנכתב מחדש ובאופן עצמאי.
שכבת הפשטה הוא אתר מערכתי עצמאי על תכנון וארכיטקטורת תוכנה. הוא אינו קורס, אינו מוסד אקדמי, אינו שירות ייעוץ או פיתוח, ואינו קשור לשום פרויקט, ארגון או אדם שפעלו בעבר בכתובת זו.