רשומות

מציג פוסטים מתאריך ינואר, 2022

חוקים לדיזיין פשוט

תמונה
בסוף שנות התשעים הגיחו לעולם מתודלוגיית הפיתוח והספר Extreme Programming שנוצרו (ברובם) על ידי Kent Beck  (האיש המגניב בתמונה למעלה).  בספר הוא הציג 4 עקרונות לעיצוב פשוט של תוכנה ואני מאמין שהעקרונות האלו נכונים היום יותר מאי פעם משום שאנחנו נמצאים בעידן בו יש כמויות עצומות של רעש בנושא דיזיין וארכיטקטורה, מאות ספרים והמון גישות. סביר להניח שהרבה מהדברים ישמעו טריוויאלים לרובנו אבל לא בהכרח באים לידי מימוש ביומיום. אפשר לשים לב שהדברים שאכתוב נכונים גם לכתיבת קוד ממש כמו לדיזיין. למה דיזיין פשוט? מפתח בשם Gergely Orosz שאני מאוד אוהב לקרוא תכנים שלו, כתב בבלוג משפט שמאוד התחברתי אליו - ״Software Architecture is Overrated, Clear and Simple Design is Underrated״. הוא כותב שארכיטקטורת תוכנה מוערכת יתר על המידה משום שרוב האנשים מסתכלים על תבניות של ארכיטקטורה (patterns) כעל פטיש ואז מחפשים מסמרים כדי לדפוק באמצעותו, במקום לשים בראש סדרי העדיפויות שלהם כללים פשוטים וחשובים של דיזיין נכון וללכת לפיהם. הטענה כאן היא שלרוב, אם נדבוק בעקרונות הדיזיין הפשוטים שלנו נשים לב בדיעבד שמימ...

ליפול מהר עם Pylint

תמונה
אם יש downside שאני לא מפסיק לשמוע בנוגע לפייתון זה היעדר הקומפילציה. התלונה שאני שומע הכי הרבה זה - ״לא הגיוני שאני כותב קוד וצריך לחכות עד ההרצה שלו כדי להבין אם מה שעשיתי היה בסדר!״. בתור אחד שמגיע משפה סטטית עם קומפילציה, מהרגע הראשון בו התחלתי לכתוב בפייתון הרגשתי שחסר לי משהו שיעבור על הקוד שלי ויספר לי על בעיות שעלולות לצוץ בעת ההרצה. בפוסט הזה אציג בקצרה ואספר איך אני משתמש בכלי שאולי היודע ביותר בתחום ה code analysis עבור פייתון, שמתיימר לתת מענה לא רע לבעיה שהצגתי - pylint . מה זה pylint pylint הוא כלי שבודק שגיאות בקוד, מנסה לאכוף סטנדרטים של השפה, ומחפש 'smells' בקוד שלנו, בנוסף הכלי יודע לתת הצעות refactor לחלקים בקוד ומספק מידע על מורכבות הקוד שלנו. ובסוף, אחרי כל זה הוא נותן לקוד שלנו ציון לפי הפרמטרים שהוזכרו לעיל. איך משתמשים ב pylint pylint הוא cli tool פשוט מאוד לשימוש.  נתקין אותו באמצעות pip install pylint   בסביבה בה שאר החבילות שלנו מותקנות  (אחרת נקבל שגיאות רבות על כך שחבילות אינן מותקנות). לאחר ההתקנה ניתן לראות את יכולות הכלי באמצעות pylint --he...