Browse by Tags
All Tags »
קוד נכון (
RSS)
עדי הראה לי רעיון מאוד מעניין למימוש שמירת אובייקט זמני בזיכרון. למה הכוונה ? נניח שיש לנו קוד כזה public class FileLogger : ILogger { } public class MockLogger : ILogger { } public class Person { public ILogger Logger { get ; set ; } } ויש לנו את פונקצייה שמקבלת כפרמטר Person אבל בחלק מהקוד של הפונקצייה לא רוצים שה - Logger יהיה FileLogger אלא MokeLogger - מן הסתם נעשה קוד כזה public void Func( Person person) { ILogger original = person.Logger; person.Logger = new MockLogger (); //work..... person...
הרבה פעמים כשאנחנו עובדים עם Services ה - host שלהם הוא Windows Service, מה שמתסכל לעבוד בצורה הזאת זה שבזמן פיתוח כדי לדבג צריך כל פעם לעשות Attach to process ובכל קומפילציה צריך לעצור את ה - Serivce ולהפעיל אותו מחדש אחרי הקופמילציה (מה שלוקח קצת זמן). אני משתמש ברעיון מעניין (נדמה לי שזה שייך לאלכס מחברת QualiSystems ) נוסיף למחלקה שיורשת מ - ServiceBase את המתודת הבאות public void Open() { OnStart( null ); } public void Close() { OnStop(); } כעת ב - Main נכתוב את הקוד הבא bool console = args...
אחד מהדברים שאני לא אוהב בעבודה עם Session זה העובדה שאחנו עובדים איתו עם מחרוזות. בפרוייקטים בינוניים פתאום מתחילים לשכוח עם איזה שם השתמשנו והאם השתמשנו בשם מסויים, והעניינים מתחילים להסתבך. ידיד יקר שי קרן כתב class בשם SessionManager שפותר את הבעיות האלו, מכיוון שהשימוש ב - Session הוא בעזרת enum. אפשר להוריד את הקוד מכאן (אני משתמש בו כבר שנתיים בכל הפרוייקטים שלי) זה עובד בצורה הבאה. (אני מציג כאן רק חלק מהקוד - הקוד המלא ניתן להורדה מהלינק למעלה) יש enum עם כל השמות שנרצה להשתמש ב - Session...
לפעמים כשמדבגים מאוד נוח להכניס מחרוזות ל - trace/console. בקיצר כתבתי את הקוד הבא: Console .WriteLine( "myObj == null " + myObj == null ); להפתעתי זה הדפיס רק את הערך false ללא המחרוזת: myObj == null. (גם כשהערך היה אמור להחזיר את התוצאה true) לאחר קצת מחשבה נזכרתי שהאופרטור + הוא לפני אופרטור ההשוואה - כלומר - מה שקרה זה הדבר הבא: חיבור של המחרוזת myObj == null למשתנה myObj ואת התוצאה השוונו ל - null, מה שתמיד החזיר את הערך false. כמובן שאחרי ההבנה הקוד שנכתב היה - Console .WriteLine...
לפעמים יש תוכנות שהייתי רוצה להכיר את המתכנתים שלהם. יש לנו סורק (שמאפשר לסרוק מקוד). הנחנו את הדף לא לגמרי במקום המתאים, והנה הודעת השגיאה שקבלנו: מבינים, לא שמתי את הדף בדיוק במקום ולא רק שאני לא מקבל פירוט על השגיאה, אני מקבל הודעה שמשהו קטסטרופלי קרה. אז, כשאתם מפתחים תנסו לתפוס את השגיאות ולתת הודעות אנושיות.
כשהראתי לסטודנטים שאני מלמד את הפוסט של ספיריטוס שמדבר על ההבדלים בין Equal ל - ==, שאלו אותי - מה ההבדל בין ה - Equal שיורשים מ - object לבין ה - Equal הסטטי ? במחשבה ראשונה עניתי - שלמעשה הקריאה - Equal(obj1, obj2 מפעילה את obj1.Equal(obj2. וכמובן שהשאלה הבאה הייתה, אז מה ההבדל ביניהם, והתשובה הייתה נפתח את ה - reflector ונראה. אז הנה הקוד של Equal public static bool Equals( object objA, object objB) { return ((objA == objB) || (((objA != null ) && (objB != null )) && objA.Equals...