לכידות(cohesion) או; איך לסדר מגירה כמו שצריך.

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

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

עוד מדד ללכידות, היא עד כמה הפונקציות במודול משרתות מטרה ברורה ומוגדרת. ככל שהמחלקה(למשל) שואפת להיות יותר פונקציונאלית ולצאת מתחום האחריות הברורה שלה, היא מאבדת מהשופטים נקודות (דוגמא קונקרטית: מתכנת, שאחראי לכתוב קוד, ועכשיו גם צריך לנקות את השירותים- זוהי הפרה ברורה של הגדרת המטרה שלו!).

ולמה זה כל כך משנה? אז לכידות מתקשרת באופן עקיף ל’צמידות", או בשפה העממית tight coupling. נגיד שאתם פותחים מגירת סכו"ם במטבח ומגלים שכל המגירה מבולגנת מהיסוד- מזלגות מעל הכפות וסכינים מעל הצלחות. לא רק שיהיה קשה לסדר את המגירה, היא לא ברורה בעליל. עכשיו תתארו שהמגירה מסודרת להפליא. מזלגות איפה שהמזלגות, וסכינים איפה שהסכינים. הכל מסודר, אפשר להכניס בקלות סכו"ם חדש למגירה.

לכידות היא עוד מדד מרכזי ב- oo (הלוא object oriented) המאפשר לנו להוריד את הסמתוכה ש-oo מעודד אותנו לייצר, ולשמור על מודולים (ו\או מחלקות במקרה שלנו) מלהיות צמודים ותלויים אחד בשני. ככל שתחום האחריות מופרד אחד מהשני, קל יותר להבין את המערכת, לדבאג אותה ולשנות\להוסיף. או במילים פשוטות יותר: המתכנתים יזדקנו לאט יותר.

לטעון תגובות?