עקרונות SOLID הם סלע העיצוב המוכוון האובייקטי בהנדסת תוכנה מודרנית.מטבע על ידי רוברט C. מרטין בתחילת שנות ה -2000, אלה 5 קווים מנחים לעזור ליזמים לבנות קוד קל יותר לשמור, להרחיב, ולספק.עבור כל אחד רציני על כתיבת תוכנה באיכות ייצור, שליטה SOLID אינה אופציונלית - זה משמעת שמפרידה קוד אד-קוד מאדריכלות ברת-תזונה עשירה, עקרונות של פיתוח מקוון, מסבירים, שיטות עבודה, שיטות עבודה, שיטות עבודה, וקידום מידע שימושיות, על בסיס-עולם זה, על בסיס להעמיק את התכונות הטובות ביותר, על שיטות עבודה, על בסיס-עולם זה, על שיטות עבודה, ומעניין, על ידי שיטות עבודה, על שיטות עבודה, על שיטות עבודה, על שיטות עבודה, על שיטות עבודה, על ידי שיטות עבודה, על שיטות עבודה, על בסיס מידע על בסיס להעמיק את שיטות עבודה, על בסיס להעמיק את שיטות פעולה, על שיטות עבודה, על בסיס להעמיק את שיטות עבודה, על בסיס מידע יעיל, על בסיס להעמיק את שיטות עבודה, על בסיס מידע על בסיס שיטות עבודה, על בסיס מידע יעיל, על בסיס מידע על שיטות עבודה, על שיטות עבודה, על בסיס מידע יעיל, על בסיס מידע על בסיס מידע יעיל, הוא לא להעמיק את שיטות פיתוח

מה הם עקרונות SOLID?

לפני צלילה לתוך המשאבים, זה עוזר לקבל תמונה ברורה של כל עיקרון.ה ראשי התיבות של SOLID עומד:

  • (ב) ⁇ (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ,0) פתח/סגור את עקרון ה-OCPve (OCPIR)FLT:1 – ישויות תוכנה צריכות להיות פתוחות להרחבה אך סגורות לשינויים.
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

הבנת כל עיקרון בבידוד היא רק הצעד הראשון.הכוח האמיתי עולה כאשר אתה מיישם אותם יחד, לעתים קרובות עם תבניות עיצוב כמו אסטרטגיה, מפעל, או הזרקת תלות.המשאבים להלן נבחרים לספק תיאוריה בסיסית ופרקטיקה מעשית לכל עיקרון.

עקרון אחריות יחיד (SRP)

(ב) נאמר כי שיעור או מודול צריך אחד, ורק אחד, סיבה לשנות.זה נשמע פשוט, אבל בפועל זה דורש מעקב קבוע נגד כיתות נפוחות.ספרים כמו FLT:0Clean CodeFLT 1 על ידי רוברט C. Martin מדגיש את החשיבות של הפרות קטנות, ממוקדות ושיעורים.

Open/Closed Principle (OCP)

(א) OCP מעודד אותך לתכנן מודולים שניתן להרחיב מבלי לשנות קוד קיים.עיקרון זה הוא מרכזי בארכיטקטורה ומסגרות של תוסף.הדוגמה הקלאסית משתמשת ירושה או הרכב כדי להוסיף התנהגות חדשה. inFLT:0Design PatternsFLT:1, האנג של ארבעה עניבה מפורשת OCP לתבניות כמו אסטרטגיה ותבנית.

Liskov Substitution Principle (LSP)

(ה-LSP מבטיח כי ההיררכיה של הירושה מעוצבת היטב: אם תוכנית משתמשת מעמד בסיס, זה צריך לעבוד נכון עם כל אחד מהשיעורים הנגזרים שלה.ההה מובילה לעתים קרובות לתנאי בדיקת סוגים.com Liskov ההגדרה המקורית של ברברה ליסקוב היא אקדמית, אבל הטיפול של רוברט C. Martin ב-FLT:0Agile Principles, Patterns, and PracticesLTs: 1 של LT1 הוא מספר דוגמאות לחיקוי עבור שיטות עבודה.

Interface Segregation Principle (ISP)

(ISP ממליץ לשבור ממשקים גדולים לקטנים, ממוקדים כך שלקוחות צריכים רק להיות תלויים בשיטות שהם משתמשים בהן.עקרון זה מקטין ישירות את ההפיכה ומשפר את יכולת המשיכה.הדוגמה הקלאסית היא ממשק מדפסת רב-תפקודי המתפצל למדפסות נפרדות, סורק וממשקי פקס.FLT:0Agile Software DevelopmentFLT:1 מקדיש מרחב משמעותי ל-ISP עם תפקיד מבוסס, כולל דוגמאות של USPGSOL.

הסתברות להורדת Principle (DIP)

DIP מבסס את התלות המסורתית ברמה גבוהה על מודולים ברמה נמוכה: שניהם צריכים להיות תלויים מופשטים.עקרון זה הוא הבסיס של הזרקת התלות (DI) ומכלי IoC. ספריו של מרטין מפגינים DIP עם הדוגמה הידועה לשמצה "קופי" תוכנית, שבו מודול ברמה גבוהה תלוי על קורא מופשט ולא על גישה קונקרטית.

ראשי תיבות של Mastering SOLID Principles

הספרים נשארים המשאבים הסמכותיים והמקיפים ביותר.למטה הם הכותרים החיוניים, התרחבו עם פרטים על מה שכל מכסה ומדוע זה חשוב.

פיתוח תוכנה Agile, עקרונות, תבניות ופרקטיקה

נכתב על ידי רוברט C. Martin ו- Micah Martin, הספר הזה הוא הטקסט הסופי על SOLID. Part I מציג את העקרונות עם הסברים מפורטים ודוגמאות קוד ב C++ ו- Java. Part II חל עליהם על מחקר מערכת תשלומים מלא, המדגים כיצד דפוסים עיצוביים כמו אסטרטגיה, Command, ומפעל יוצאים באופן טבעי מ-SOLID.הספר מכסה גם הפיכה ועקרונות, מה שהופך אותו אידיאלי עבור אדריכלים לקרוא רק ספר אחד.

קוד נקי: חוברת של Agile Software Craftsmanship

למרות ש-FLT:0 ⁇ CodeFLT 1 מתמקדת בשם, פונקציות, הערות, ופורמטיבי, הפילוסופיה הבסיסית שלה מסתמכת במידה רבה על SOLID. הפרק "Classes" ביקורות מפורשות SRP, OCP ו- DIP.העצה המעשית של הספר - כגון שמירה על פונקציות קטנות, הימנעות מהצהרות מתג, ומעדיפים הצהרות פולימורפיזם - מחזקת חשיבה SOLID רבים למצוא פתרון מוצק.

תבניות עיצוב: יסודות של תוכנה ממוקדת אובייקטים

האנגג של ארבעה קלאסי מציג 23 תבניות עיצוב, שרבים מהם הם יישום ישיר של עקרונות SOLID.לדוגמה, תבנית אסטרטגיה מגלמת את OCP, בעוד דפוס המפעל הפשטני תומך DIP.הספר אינו מזכיר SOLID בשם (הוא טורף את ה-Acronim), אבל הבנה של תבניות אתה חושב במונחים של ממשקים, הרכב, אחריות יחידה.

תוכנית ragmatic Programmer

על ידי אנדרו האנט ודיוויד תומאס, הספר הזה מציע עצות חסרות זמן על כלי תוכנה, בעוד שהוא לא מקדיש פרק ל-SOLID, קטעים על "תוכנה טובה-מספיקה", "Tracer Bullets", ו"The ⁇ of Good Design" תואם הדוק עם חשיבה SOLID.הדגש של הספר על YAG, DRY, אוthogonality משלימה SOLize על ידי עידוד לשינוי פנימי של ספר לימוד זה פחות מוגדר על ידי עיצוב.

ספרים איכותיים שווים

  • (FLT:0) הערכת UML ו- PatternsFIRLT:1) על ידי קרייג לארמן - מכסה עקרונות GRASP, אשר משלימים SOLID, וכולל פרק חזק על עיצוב מונח באחריות.
  • (FLT:0) Head First Design PatternsFLT:1 על ידי Freeman, Robson ו- Sierra - משתמשת בפורמטים חזותיים ותרגול כדי ללמד דפוסים הנשען על SOLID, במיוחד OCP ו-DIP.
  • (FLT:0Clean ArchitecturesFLT:1) מאת רוברט מרטין, עקרונות SOLID לאדריכלות ברמת המערכת, המסביר כיצד הם מאפשרים שכבות גבול וחוקי תלות.

קורסים מקוונים ו Tutorials

קורסים ממובנים מספקים למידה מודרך עם תרגילים וחידון.כאן הן כמה האפשרויות הטובות ביותר על פני פלטפורמות.

המונחים: Plural

פלודורק מארח כמה קורסים באיכות גבוהה המתמקדים ב-SOLID. "עקרונות SOLID עבור C# Developers" על ידי סטיב סמית הוא מועדף רב שנתי.זה מכסה כל עיקרון עם קוד C# בעולם האמיתי, שיפור תרגילים, וחידוןs. קורס אחר, "עקרונות SOLID עבור Java Developers", הוא קפדני באותה מידה. Pluralsight מציעה לצלול עמוק לתוך יחידת דלקות, בדיקה, ונקי ארכיטקטורציה, כל מושגים, בדרך כלל דורש ניסיון משפטי, אך דורש מספיק זמן פנוי, אך ורק כדי לחזק את עקרונות ליבה נדרש.

אודימי

קטלוגו של אודמי כולל עשרות קורסים הקשורים ל-SOLID. "עיצוב תבניות ב- C# ו-.NET" על ידי דמיטרי נסרק מקדיש חלקים שלמים ל-SOLID עם C# דוגמאות: "עקרונות של SOLID: המדריך של מפתח התוכנה לקוד גמיש ושמורני" על ידי מתיו הנסון הוא קורס ממוקד, מבוסס הפרויקט עם קוד להורדה.

Microsoft Learn

פלטפורמת הלמידה הרשמית של מיקרוסופט כוללת מודולים על עקרונות עיצוב תוכנה.The FLT:0 (Implement SOLID Principles in C++FLT:1מודול הוא דוגמא עבור C++. יותר רחב, "היישומים המודרניים של Architect עם ASP.NET Core" מכסה את DIP, OCP ו-SRP בהקשר של .NET.

YouTube & Free Video Resources

(ב) כמה ערוצים ב- YouTube מציעים תוכן SOLID מעולה, FLT:0Derek BanasFeloph:1 יש וידאו הדרכה מעולה המסביר את כל חמשת העקרונות מתחת ל-12 דקות עם דוגמאות קוד:2Programming with Moshph 3 ו-FLT:4migoscodeFrea:5 יש גם מלא רשימות עבור סימולציות ו-JavaFreating ל-Apremereitation 7.

משאבים ומכשירים נוספים

מעבר לספרים וקורסים, אתרי האינטרנט והמכשירים הבאים יכולים להאיץ את הלמידה שלך ולעזור לך ליישם SOLID בעבודה יומיומית.

אישור:Guru

אתר זה מציע קטלוג עצום של תבניות עיצוב והסברים SOLID.כל עיקרון יש דף משלו עם תיאור מפורט, אנלוגיות בעולם האמיתי, ודוגמאות קוד בשפות שונות (C#, Java, PHP, Python, וכו ') דיאגרמות UML החזותי וטבלאות סיכום להפוך את זה קל להשוות עקרונות. Refactoring.Guru גם שומר אוסף של ריחות כי לעתים קרובות תוצאה של הפרת SOLID, כגון כיתות גדולות כגון הפרה של הפרה (SRP) או תכונה).

מקור

מקור עושה מספק מאגר של תבניות עיצוב, אנטי-פטרונים, וטכניקות מספקות מחדש.חלק SOLID שלהם פחות מלוטש מאשר ivating.Guru אבל מציע נקודת מבט שונה, במיוחד על היחסים בין SOLID ו- GRASP. האתר כולל מחקרים מקרה מפרויקטים קוד פתוח, מראה שבו SOLID הוא מיושם או הופרו.

Microsoft Docs - .NET Architecture Guide

תיעוד של מיקרוסופט על אדריכלות מודרנית .NET מתאר במפורש את SOLID בעקרונות המנחים שלה.העקרונות האדריכליים:0 (Architectural PrinciplesFLT:1) דף מתאר כיצד SRP, OCP, ו-DIP משפיעים על אדריכלות שכבתית, מיקרו-שירותים, ואדריכלות נקייה.הוא גם מספק דוגמאות קוד וקישורים למשאבים עמוקים יותר.NET רוצה לראות SOLID בהקשר של יישומים ארגוניים.

כלי ניתוח סטטי

כדי לאמת את תאימות SOLID בקוד שלך, שקול כלים כגון SonarQube (לרי קוד), NDepend (עבור .NET עם גרפים תלותיות), ו- ReSharper (בדיקות קוד שדגל SRP הפרות) כלים אלה יכולים לזהות שיעורים גדולים, היררכיות עמוקות או ממשק זיהום - SOLID infractions. infractions.

פורומים ומועצות דיון

(בשיתוף עם קהילת המפתח מסייע לחזק את ההבנה שלך. Stack Overflow יש אלפי שאלות מתויגות עם "עקרונות פתורים" (Soid-principles), שבו אתה יכול לראות דילמות ופתרונות בעולם האמיתי: TheFLT:0r / למידה programmingFLT:1 ו-FLT:2r/cspFLT 3 subredits לעתים קרובות מארחים דיונים על יישום SOL5ware נוסף:

טיפים מעשיים ליישום עקרונות SOLID

קריאה בנוגע ל-SOLID אינה מספיקה; עליך ליישם אותה באופן עקבי.כאן אסטרטגיות לעבור מהתאוריה כדי לשלוט.

התחל עם קוד מורשת

קח מודול קטן או מעמד מפרויקט קיים כי קשה לשנות.זהה כי עקרון SOLID הוא מפר.לדוגמה, שיעור עם אחריות מרובות (SRP נושא) או שיטה אשר בודקת את הסוג של טיעון (נושא LSP) כדי להתאים את העיקרון, צעד אחד בזמן. חזור על התרגיל השבועי הזה עד שהתהליך הופך לטבע שני.

השתמש ב-Pair Programming and Code Reviews

תכנות אוויר עם מורה או עמית שמבין SOLID יכול להאיץ את הלמידה במהלך ביקורות קוד, לשאול במיוחד אם הקוד מפר כל עיקרון SOLID.קבוצות רבות לאמץ רשימות כי כוללות "האם לכיתה זו יש יותר מאחת הסיבות לשינוי?" או "האם אנו תלויים בהפשטה או יישום קונקרטי?"

Solve Katas ו- התרגילים

(הופנה מהדף katas - תרגילי הקידוד הקטנים שנועדו לחזור על עצמם - הם מצוינים להגשמת SOLID:0Gilded RoseveFLT:1) kata מפורסם על ההפיכה הגבוהה שלו וחוסר SOLID; מתן מחדש לציית OCP ו-SRP הוא אתגר קלאסי.

בניית אדריכלות Plugin

הבנה עמוקה של OCP ו- DIP מופיעה כאשר אתה מעצב מערכת התומכת בתוספים של צד שלישי. נסה לבנות גנרטור חשבונית פשוט שבו פורמטי פלט שונים (PDF, HTML, CSV) ניתן להוסיף על ידי יישום ממשק משותף.כוחות אלה אתה כותב קוד סגור להתאמה, עדיין קוד נשגב, חיזוק OCP ו- DIP בו זמנית.

למדו אחרים

הדרך הטובה ביותר לשלוט בנושא היא ללמד אותו. לכתוב פוסט בבלוג המסביר ISP, ליצור סיפון שקופיות על LSP עבור הצוות שלך, או להקליט מסך קצר.כאשר אתה צריך להסביר SOLID לאחרים, אתה תגלה פערים בהבנה שלך.תהליך זה מעמיק הידע שלך בונה ביטחון.

מסקנה

עקרונות SOLID הם מסע, לא יעד.המשאבים המודגשים במאמר זה - מספרים פונדמנטל:0Agile Software Development, Principles, Patterns, and PracticessofFLT:1 לפלטפורמות אינטראקטיביות כמו FLT:2Refactoring.GuruFLT 3: 3 - לספק נתיב מוצק קדימה, מובנה עם תרגול מכוון: קוד גמיש, כדי לפתח יותר תוכניות, כדי לפתח את הקוד שלך, וכדי לספק יותר יעיל יותר, כמו גם את ה-ה יעילה יותר, כמו גם את ה-ה של קידוד שלך, כדי לפתח יותר, כמו גם את ה-ה של קידוד שלך, כמו גם את ה-ה, כמו גם את ה-ה, כדי לספק את ה-הקוד יעיל יותר, כדי לספק את ה-זמנית, כדי לספק את ה-Aactractractractivreative Code שלך, כדי לספק .