| נשלח ב-5/5/2014 21:08 |
|
| |
מאמר על חשיבות הפרדת שכבות
להלן, אסכם לעצמי [ולאלפי הקוראים] את נסיוני האישי, מתיכנות מפוזר ואקראי, לתכנות מסודר לפי תבניות עיצוב מתקדמות ומודרניות.
לעולם התכנות, נכנסתי מVBA: פתחתי יישומים בסביבת אופיס: אקסל, אקסס, אאוטלוק וכו'.
VBA, איננה שפת תכנות מודרנית, אבל אפשר לעשות איתה דברים נהדרים.
אין סטנדרטים לכתיבת VBA, וכל אחד כותב איך שהוא רוצה. העיקר שהמטרה מתבצעת.
מVBA, המשכתי לדוט נט, ופתחתי יישומים מבוססים על winForms.
תכנות בwinForms, הוא קל ופשוט, כמעט כמו VBA... וגם שם, אין הקפדה על הפרדת שכבות.
אם צריך להציג טבלה כלשהיא, אז פשוט מאד: פותחים קונקשיין, יוצרים קומנד, שולחים פרמטרים, ומקבלים dataTable.
את הdataTable מאגדים ישירות לגריד, ושלום על ישראל!
יום אחד נמאס לי מwinForms, ועברתי לWPF. ושם, כל מה שהכרתי כבר לא עבד...
מהר מאד הסתבר, שWPF, אין כזה דבר לפתוח קוניקשיין בקוד ביהיינד.. ויתרה מכך, בכלל לא מקובל להשתמש בקוד ביהיינד..
מה כן? ORM. [למשל entity framework]
במבט ראשון, זה מעצבן! למה אני צריך להקים מחלקה בשביל כל טבלה קטנטונת? נניח שיש לי ביישום כל מיני קומבובוקסים, שכל אחד מציג טבלה כלשהיא. אני צריך לתחזק מחלקה בשביל כל אחד?
ובכלל, כל ההגבלות המעצבנות של MVVM !
בMVVM, אסור, פשוט אסור, לפנות בקוד אל הVIEW !
למה?
תוקן על ידי אור_היום ב- 06/05/2014 09:38:28
 |
|
|
|
|
| נשלח ב-22/5/2014 01:09 |
|
| |
vouch
_________________
|
|
|
|
| נשלח ב-22/5/2014 01:09 |
|
| |
vouch
|
|
|
|
|
| נשלח ב-5/5/2014 21:29 |
|
| |
השבוע, נתקלתי במקרה שהמחיש לי בצורה מושלמת את המשמעות של הפרדת שכבות.
התבקשתי להקים מערכת לחישוב שכר. המערכת שולפת נתונים משרת אורקל, מחשבת את השעות, השעות הנוספות וכו'.
בימי הwinForms העליזים, הייתי מקים טופס עם לחצן, בארוע של הלחצן, הייתי כותב את הלוגיקה: שלוף את הנתונים מהדטהבייס, לולאה ועוד לולאה וכו' וכו', ואת הפלט הייתי מציג בגריד.
אבל, הפעם, הלקוח בכלל לא היה סגור על עצמו איזה ממשק הוא רוצה... למעשה, לוח הזמנים בכלל לא הותיר זמן להקמת ממשק. ולכן, הפרוייקט הוקם בקוד בלבד, בלי שום ui, ולמרות שהפרוייקט בעצם מושלם, והוא מספק את כל הפונקציונליות הדרושה, אני חופשי לחלוטין, ויכול לממש אותו באמצעות ממשק וובי, או ממשק דסקטופי [wpf כמובן], אנד ווטאבר.
בינתיים, הפרוייקט מייצא את הנתונים לקבצי טקסט, ואתמול הוספתי ייצוא לאקסל.
וזה, התענוג הגדול שבהפרדת שכבות. הדטה, והלוגיקה, לא מסתבכים להם בתוך הui, אלא עומדים בפני עצמם, מסודרים, ברורים ומאורגנים.
|
|
|
|
| נשלח ב-5/5/2014 21:21 |
|
| |
עם הזמן, לומדים להכיר את חשיבות ההפרדה, שהיא בבחינת "דרך ארוכה וקצרה". היתרון העיקרי, הוא טסטאייבליות [היינו היכולת לבדוק את הקוד] למי שלא מכיר, הנה מדריך בסיסי לunitTest בסביבת visual studio קישורוהנה עוד מאמר, שפשוט עושה חשק לכתוב unitTest.. קישוראם בwinForms, כשרציתי לבדוק את הקוד הרצתי את הפרוייקט, בMVVM, או בכל תבנית עיצוב דומה, הלוגיקה נפרדת לגמרי מהממשק, ואני יכול לבקר את הקוד בנפרד מהממשק.
|
|
|
|
|