Table of Contents
תפקיד עקרונות SOLID בפיתוח פתרונות הנדסה עתידיים
בעידן שבו הטכנולוגיה מתפתחת בקצב חסר תקדים, תוכנת בנייה שעדיין ניתנת לתחזוקה, אינטנסיבית, וחזקה לאורך זמן ארוך היא אתגר קריטי.עקרונות SOLID, שהוצגו על ידי רוברט C. מרטין בתחילת שנות ה -2000, לספק קבוצה של צוותים עיצוב המסייעים למהנדסים ליצור מערכות המסוגלות להסתגל לשינוי ללא התמוטטות תחת משקלם שלהם.עקרונות אלה אינם רק בנית תאורטית; הם מאפשרים שיטות רבות של קוד פתוח וגמישות, כיום, אשר יכולות לשפר את שיטות סודיות, ולהפחית את שיטות הנדסת יכולת הפחתת יכולת הפחתת יכולת התקני משמעת טכנית, וגמישות, וגמישות, וגמישות, ולהפחית את שיטות הנדסת מערכות הנדסת חשמל, על ידי שיטות הנדסת חשמל, על ידי תכונות הנדסת חשמל, על ידי תכונות מתקדמות, אשר יכולות לשפר את שיטות הנדסת חשמל, אשר יכולות לשפר את רמת יכולת הפחתת יכולת הפחתת יכולת הפחתת יכולת הפחתת יכולת הפחתת יכולת הפחתת יכולת התקני אבטחה, על ידי שיטות הנדסת חשמל, על ידי שיטות עבודה, אשר יכולות להיות מסוגלות רבות.
הנדסה מבוססת עתיד אינה עומדת לחזות את המגמה הטכנולוגית הבאה; מדובר בעיצוב מערכות שיכולות לספוג שינוי בחסד.אם אתם בונים ארכיטקטורת מיקרו-שירותים, יישום מונוליטי או פלטפורמה ללא שרת, עקרונות SOLID מציעים שפה משותפת ומערכת של מגבלות שמקדמות את המודולריות, הפרדת חששות, והפיכה רופפת מאמר זה חוקר כל עיקרון בעומק, מספק דוגמאות מעשיות, ודן כיצד להטמיעו פתרונות של זמן כדי ליצור פתרונות לפיתוח של פתרונות.
הבנת העקרונות של SOLID
ראשי התיבות של SOLID מייצגים חמישה עקרונות עיצוב עיקריים:
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ◄ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
עקרונות אלה פועלים יחד כדי להנחות מהנדסים לבניית תוכנה שקל יותר להבין, לבדוק ולשנות.הם בעלי ערך במיוחד כאשר הם מוחלים על הארכיטקטורה הליבה של מערכת, כפי שהם מסייעים לבודד שינויים ולמנוע אפקטים משבי לב.בעוד שאין עיקרון הוא כדור כסף, היישום המשולב של SOLID יכול להפחית באופן דרמטי את עלות תחזוקה והרחבה על פני חיי המערכת.
ההקשר ההיסטורי
עקרונות SOLID הופיעו מהקהילה עיצוב ממוקדת האובייקט כתגובה לנוקשות ולשבריריות של בסיסי קוד גדולים.רוברט מרטין (הידועים לעיתים קרובות בשם "Uncle Bob") שיחדו את הרעיונות האלה בספריו ובמאמרים, וציירו על עבודה קודמת על ידי ברטראנד מאייר (Open/Closed Principle) וברברה ליסקוב (Lisitustitu Prin), ו-SOLd Software, הם למעשה, לאורך כל שיטות מודרניות.
עקרון אחריות יחיד (SRP) ומודולולריות
עקרון האחריות הבודד קובע כי שיעור, מודול או פונקציה צריך להיות אחד, ורק אחד, סיבה לשנות. במילים אחרות, כל יחידה של קוד צריך להיות אחראי על חלק יחיד, מוגדר היטב של הפונקציונליות של המערכת.הפרדה זו של חששות היא הבסיס של אדריכלות מודולרית. כאשר לכל רכיב יש מטרה ייחודית, המערכת הופכת קלה יותר להיגיון, בדיקה, ללא תופעות לוואי בלתי מאומתות.
(הופנה מהדף מסחר אלקטרוני טיפוסי (SRP) הוא מחלקה מונוליטית "סדרות" המטפלת באימות סדר, עיבוד תשלום, ניכוי מלאי, הודעות דוא"ל, ו- חסימה.כל שינוי לכל אחד מהאחריות האלה - כגון מעבר מדואר אלקטרוני להודעות SMS - כוחות שינוי לאותו מעמד, הגדלת הסיכון של החלפת תכונות שאינן קשורות על ידי החלת SRP, אתה יכול להיות מחולק: 1F: 2.
היתרונות של SRP ל- Future-Proviewing
- (ב) ⁇ :0) ⁇ שינוי: 1 כאשר כללים עסקיים מתפתחים, רק המודול הרלוונטי מושפע.
- (ב) הסתברות:0) ,התמדה: מרכיבים חד-תכליתיים קלים יותר למבחן יחידה בבידוד.
- (ב) בעלות:0) קלמיר: צוותים 1FLT יכולים להתמחות בתחומים ספציפיים מבלי לדרוך על קוד זה.
- (ב) ⁇ :0) ,Falve:1) מפתחים חדשים יכולים להבין את המערכת על ידי התמקדות באחריות אחת בכל פעם.
כדי לאכוף SRP, לבצע באופן קבוע ביקורות קוד כי לאתגר אם מודול יש יותר מאחת הסיבות לשנות. השתמש בכלים כמו ניתוח סטטי לזהות שיעורים גדולים או שיטות להתמודד עם חששות מרובים. בפועל, SRP לעתים קרובות מוביל למספר גדול יותר של שיעורים קטנים, המהווה סחר- off כי משלם על יכולת שמירה.
Open/Closed Principle (OCP) ו-Extensibility
עקרון Open/Closed טוען כי ישויות תוכנה (מחלקות, מודולים, פונקציות) צריכות להיות פתוחות להרחבה אך סגורות לשינוי.המטרה היא לאפשר התנהגות חדשה להיווספו ללא שינוי קוד קיים, נבדק.זה מושג בדרך כלל באמצעות אבסטרקטיון - שימוש בממשקים, כיתות מופשטות או דפוסים אסטרטגיה - כך שניתן יהיה מוזרק פונקציונליות חדשה ולא קוד קשיח.
תארו לעצמכם מערכת דיווח אשר מייצרת כיום דוחות PDF.אם דרישה חדשה דורשת דוחות HTML, גישה או-CP-violating תשנה את הגנרטור הדו"ח הקיים כדי לכלול מצב לכל סוג של דו"ח.בזמן, תנאים אלה דורשים את הקוד שברירי וקשה לבחון. An OCP-compliant design להגדיר ממשק:5 ממשק, עם יישום קונקרטי עבור LT:6 ו-FLT 7.
יישום OCP עם תבניות עיצוב
מספר תבניות עיצוב לדבוק באופן טבעי ב- OCP:
- (ב) ⁇ :0) שיטות פשטות: 1FLT:1 אלגוריתמים משתנים (למשל, אסטרטגיות מחירים שונות) שניתן לקשור ללא שינוי ההקשר.
- (ב) ראטל שיטת דפוס: 1FLT) מאמת את השלד של אלגוריתם בכיתה בסיסית, ומאפשר תת-מעמדות לעקוף שלבים ספציפיים.
- (ב) ,0) ,Decorator Patterns: FLT:1 מוסיף אחריות לאובייקטים באופן דינמי מבלי לשנות את המבנה שלהם.
על ידי תכנון מערכות עם OCP בראש, צוותי הנדסה יכולים להגיב לדרישות חדשות עם סיכון מינימלי.העיקרון הוא נהג עבור זריזות ארוכת טווח, שכן הוא מעודד את השימוש בהפשטות המפרקות את החלקים היציבים של המערכת מן הרטבים.
Liskov Substitution Principle (LSP) ו- Flexibility
ה- Liskov Substitution Principle קובע כי אובייקטים של סופר-class צריך להיות להחליף אובייקטים של תת-מעמד שלה מבלי להשפיע על נכונות התוכנית.במהות, שיעורים נגזרים חייבים להתנהג באופן שאינו מפר את הציפיות של מעמד הבסיס. LSP מבטיח כי פולימורפיזם עובד נכון וכי ההיררכיה מתוכננת היטב.
(ב) "הפרת" (ב) היא הבעיה של "המשולש" (ב) אם למחלקה (FLT:8) יש יחס של 9 ו-FLT:10 שיטות, ו-FLT:11 תת-קבוצה מעל שיטות אלה כדי לשמור על שני הממדים שווים, אזי קוד אשר מניח רוחב וגובה עצמאי ישבור כאשר עיצוב טוב יותר הוא לא לעשות שימוש ב- 14:
הבטחת LSP בפרקטיקה
לדבוק ב-LSP:
- השתמש בעיצוב על ידי חוזה: מסמך תנאים מוקדמים, תנאי דואר, וחלודות לשיעורי בסיס, ואכיפתם בכיתות נגזרות.
- הרכב הפשוף על הירושה: דלגציה לעתים קרובות נמנעת מהפרות LSP עדינות הנובעות מעצים מורשת עמוקים.
- כתוב בדיקות יחידה המאמת התנהגות נגד ממשק המעמדי הבסיסי, לא רק יישום ספציפי.
כאשר תת-טררקטורים או ספריות של צד שלישי מעורבים, LSP הופך לערובה חוזית כי אינטגרציה תישאר יציבה. עבור פתרונות עתידיים, LSP מבטיחה כי אתה יכול להחליף את המימוש (למשל, החלפת מודול ריגול מורשת עם מטמון מבוזר) מבלי לשבור צרכנים קיימים.
Interface Segregation Principle (ISP) ו-Clity
עקרון ה- Interface Segregation ממליץ ללקוחות לא להיות מחויבים להסתמך על ממשקים שהם אינם משתמשים בהם. במילים אחרות, ממשקים גדולים, מונוליטיים צריכים להיות מחולקים לקטנים יותר, ספציפיים יותר.זה מקטין את ההפיכה והופך מערכות ליותר נצפית והתאמה.
(ב) ויקרא י"ד, ב[[1924]], [[1924]]]], [[1924]]]], [[1924]]]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]] ו[[1924]], [[1924]], [[1924]]]]]], [[1924]]]], [[1924]]]]]]]], [[1924]] ו[[1924]], [[1924]], [[1924]], [[1924]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]], [[1924]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]
ISP ו- Microservices
ISP חל גם ברמת השירות. API בעל כורח, החושף נקודות קצה רבות עבור מקרים שונים של שימוש שונים, מכריח כל צרכן להתמודד עם המורכבות.על ידי פיצול APIs לממשקים קטנים יותר, ספציפיים לתחום (למשל, FLT:32, FLT:33, FLT:33), כל צרכן תלוי רק בממשקים שהוא צריך להתאים את זה עם עקרונות של דומיינים (DDriveedהקשרים) ו-Ded).
יישום ISP מוביל לעתים קרובות קבוצה עשירה יותר של ממשקים קטנים יותר, אשר עשוי להגדיל את מספר הקבצים אך להפחית את ההשפעה של שינויים. עבור הנדסה עתידית, ISP עוזר למנוע "שיעורי שומן" שהופך לרכזות עבור תלות לא קשורה, מה שהופך את המערכת יותר גמישה כדי לשנות את הדרישות.
הסתברות להורדת Principle (DIP) ו- Decoupling
הכדאיות של ⁇ Principle קובע כי מודולים ברמה גבוהה לא צריך להיות תלוי על מודולים ברמה נמוכה; שניהם צריכים להיות תלויים מופשטים.בנוסף, מופשטים לא צריכים להיות תלויים בפרטים; פרטים צריכים להיות תלויים על מופשטים.DIP הוא הליבה של הזרקת תלות ועיוות של שליטה (IoC) מכולות, אשר הם מרכיבים של מסגרות מודרניות כמו אביב, ASP.NET, Core, Ang.
ללא DIP, שיעור ניהול עסקי ברמה גבוהה עשוי באופן ישיר מיידי למקם מאגר נתונים קונקרטי או ספריית כניסה.אם טכנולוגיית אחסון הנתונים משתנה (למשל, מ-SQL ל- NoSQL), הקוד ברמה גבוהה חייב להיות שונה. על ידי הצגת אבסטרקציה - כגון ממשק FLT:35 - הן לוגיקה עסקית ברמה גבוהה ו- תצורה נמוכה של החלפת aconi ואז ניתן לגעת בממשק קונקרטי.
יישום מעשי עם פיזור תלות
אימוץ DIP בדרך כלל כרוך:
- Defining ממשקים או כיתות מופשטות עבור תלות.
- הזרקת התלות האלה באמצעות פרמטרים של בניית, פרמטרים של שיטות, או קובעי רכוש.
- באמצעות מיכל IoC לניהול מיידיות וחיות חיים.
דפוס זה מקלקל רכיבים, מה שהופך אותם באופן פרטני לבחינה והחלפה.לדוגמה, אתה יכול להזריק את ה-FLT:36 במהלך בדיקות יחידה ו-FLT:37 בייצור, כל ללא שינוי המעמד הנצרך.DIP הוא בעל ערך במיוחד במערכות גדולות שבהן קבוצות מרובות בעלות שכבות שונות - הם יכולים לפתח נגד ממשקים משותפים ללא המתנה ליישום קונקרטי.
אתגרים ומסחריים בהגשת SOLID
בעוד עקרונות SOLID חזקים, הם לא ללא אתגרים.הנדסה מוקדם בפרויקט יכול להוביל מורכבות מיותרת ופשטות מוקדמת.צוותים חייבים לאזן את התשוקה לגמישות עם הצורך בפשטות.
- (ב) התפלגות בין-פנים: 1FLT 1:1 החלת ISP באופן מוגזם יכול לגרום מאות ממשקים זעירים שקשה לנהל.
- (ב) ,0) ,התקיצה: DIP עשוי להציג הרבה כיתות נוספות ושכבות עקיפות, מה שהופך את בסיס הקוד קשה יותר לנווט.
- (ב) ,0) רפורמות מעל ראש: FLT:1, מופשטת מופרזת יכולה לזלזל בביצועים, במיוחד בדרכים קריטיות.
- (ב) ⁇ :0) כפלת ה-LSP: ⁇ 1 (בתרגום חופשי: 1) היררכיה של ירושה ענייה המפרה את LSP יכולה לייצר באגים עדינים שקשה לתפוס אותם.
המפתח הוא ליישם עקרונות SOLID באופן מעשי.לא כל חלק של קוד צריך דבקות מלאה; להתמקד בתחומים הליבה כי הם סבירים ביותר לשנות. השתמש בדפוסי עיצוב בספאם ורק כאשר הם פותרים בעיה אמיתית.
שילוב SOLID לתוך תהליך הפיתוח
כדי להטביע SOLID לתוך תרבות ההנדסה שלך, לשקול את הפעולות הבאות:
- (FLT:0) עיצוב דומיין-Driven:FLT:1 אלני, גבולות אדריכליים עם תת-דומיינים עסקיים. SOLID עקרונות פועלים באופן טבעי בתוך ההקשרים המוגדרים היטב.
- (FLT:0) התפתחות נהיגה (TDD): מבחנים של כתיבה לפני קוד כוחות לך לחשוב על ממשקים ובדיקתיות, אשר לעתים קרובות מוביל עיצובים SOLID יותר.
- (ב) [ה]ה]: [ה] [ה] [ה]] [ה]] [ה]] [ה]]] [ה]] [ה]]]הההההההההההההההההההההההההתאמת] היא [העיקר] [ה] [ה] [ה] [ה] [ה] [התורה] [ה] [ה] [ה]] [ה]]]] [ה] [ה] [ה] [ה] [ה] [ה] [הההה] [ה] [ה] [ה] [ה'] [ה']] [ה']]]]]] [ה']] [ה']] [ה'] [ה']]]]]]]]] [ה'] [ה'] [ה'] [ה'] [ה'] [ה'] [ה'[ה'] [ה'] [ה']] [ה'] [ה']]]]]]]]]]'[ה'[ה'[ה'[ה
- (ב) ,0) אישור טביעות אצבע: FLT:1 קבע זמן לשלם את החוב הטכני על ידי מתן הפרות.טיפול SOLID כהמטרה מרגשת שאתה משפר כל הזמן.
- (FLT:0) ,Overling:BuildFLT:1) השתמש בניתוחים סטטיים (למשל, SonarQube, ReSharper, PMD) כדי לזהות שיעורים גדולים, תלות מחזורית, והפרות אחרות.
על ידי שאיפת שיטות אלה לתוך זרימת העבודה היומית שלך, SOLID הופך להרגל ולא רשימת צוותים כי הפנימיות עקרונות אלה למצוא כי בסיסי הקוד שלהם להישאר קוהרנטי אפילו כמו ערימה הטכנולוגיה הבסיסית מתפתח.
SOLID ואדריכלות תוכנה מודרנית
העקרונות נשארים רלוונטיים מאוד בפרדיגמה עכשווית כגון מיקרו-שירותים, מחשוב ללא שרת, וארכיטקטורה מונחת אירועים.
- (FLT:0Microservices: FLT:1 כל שירות לדבוק באופן אידיאלי ב- SRP (היכולת העסקית של החברה) ו- ISP (משטח APIarrow). DIP מעודד שירותים לתקשר באמצעות ברוקרים הודעה או שערי API במקום תלות ישירה.
- (FLT:0) ,UDriven Systems:FLT:1 OCP הוא באופן טבעי לראות כאשר צרכנים חדשים באירוע נוספו ללא שינוי המפיק.LSP מבטיח כי מטפלים באירוע מתאימים חוזים צפויים.
- (FLT:0) פונקציות ללא שירות: 1FLT:1 כל פונקציה נוטה להיות אחריות אחת, ו DIP הוא מאולץ כאשר התלויות מוזרקות דרך בונה הפונקציה.
יתר על כן, עקרונות SOLID משלימים דפוסים אדריכליים אחרים כגון אדריכלות הקסגונית (Ports and Fiters) ואדריכלות נקייה, שניהם מדגישים מאוד את DIP ואת גבולות מופשטים. למידה ויישום SOLID הוא צעד יסוד לקראת שליטה בדפוסים ברמה גבוהה אלה.
משאבים חיצוניים ללמידה נוספת
כדי להעמיק את ההבנה של עקרונות SOLID, לחקור את ההפניות הסמכותיות הבאות:
- (ב) ⁇ (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- [העיקרון]: [הפתוח] [הפתוח] של רוברט מרטין מרטין דר'' 1:0] מאמרו המקורי של דוד בוב המסביר את OCP בעומק.
- (FLT:0) עקרונות עיצוב מאת מרטין פולראלבייט 1 (Fowler) – עקרונות עיצוב תוכנה, כולל SOLID.
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
מסקנה: בניית לטווח הארוך
עקרונות SOLID אינם כדור כסף, אבל הם ערכת כלים מוכחת לניהול המורכבות ומאפשרת שינוי.על ידי יישום שיטתי SRP, OCP, LSP, ISP, ו DIP, צוותי הנדסה יכולים ליצור פתרונות שאינם רק חזקים היום, אלא גם הסתגלות לדרישות של מחר.המאמץ מושקע בלמידה וליישם עקרונות אלה לשלם דיבידנדים בעלויות תחזוקה מופחתות, תכונה מהירה יותר, קוד איכותי יותר.
הנדסה עתידית היא תהליך מתמשך.זה דורש משמעת, למידה רציפה, ונכונות לספק הבנה מעמיקת.עשה SOLID חלק מהדנ"א של הצוות שלך, ואתה לבנות מערכות שיכולות למזג אוויר את הסערה של הפרעה טכנולוגית.