DCSIMG
March 2008 - Posts - Ohad Aston - ASP.NET Blog

Ohad Aston - ASP.NET Blog

פיתוח לאינטרנט, ASP.NET ועוד

על הבלוג

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

Try Opera today - it's free

Ohad Aston's Facebook profile

Pagerank - קידום בגוגל

website counter

Powered by TinyMCE
Add to Technorati Favorites
Add to Google

אני ב - Twitter

    הבלוגספירה

    עצומות חשובות - חתמו והשפיעו!

    פרוייקטים ששווים הצצה

    March 2008 - Posts

    המשך: Blog posts Tags standardization

    איתי שקורי כתב בפוסט Blog posts Tags standardization על הבעיה של ריבוי תגיות והבעיה בחיפוש פוסטים על פי תגיות.

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

    1. יש תגיות שכנראה לא ניתן יהיה לצמצם (כמו MOSS ו - SharePoint), הפתרון במקרה הזה יהיה לשים את שתי התגיות בקביעות על כל פוסט שנוגע לנושא.
    2. יש תגיות שבהחלט כדאי לצמצם. אני לא רואה טעם ביותר מתגית אחת עבור ‎.Net Framework 3.5 (אפשר לראות בחיפוש על פי תגיות שיש גם ל - 3.5 שתי תגיות וגם ל - 3.0 שתי תגיות).

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

    אם גולש רוצה לחפש פוסטים על Framework 3.5 העובדה שיש שתי תגיות לנושא הזה תגרום לו להבין שאם הוא ילחץ על אחת מהן - כל הפוסטים שמתוייגים בשניה לא יופיעו בתוצאות, וככל שנכנסים עמוק יותר המצב הופך גרוע יותר (מבולבלים? גם אנחנו).

    גם אני ניסיתי מספר פעמים להשתמש בתגיות (ודווקא ב - CodePlex הן די שימושיות)  והתאכזבתי. אני אישית משתדל לשמור על איזה עקביות עם התגיות שכבר קיימות (למרות שגם זה לא הכי עזר).

    בשורה תחתונה אני מאוד תומך ברעיון שאיתי העלה, אני חושב שאולי כדאי להרים את הכפפה, ולשאול - מי מעוניין להצטרף ליוזמה?

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

    ועוד רעיון בנוגע לאנגלית: לדעתי הוספה של התגית "English" לכל  הפוסטים שכתובים באנגלית תהיה מאוד שימושית עבור גולשים זרים (כך גם יהיה ניתן ליצור דף בית באנגלית שיביא את כל הפוסטים המתוייגים כ - English, וגם אם לא יהיה אחד כזה, הגולש יוכל פשוט ללחוץ על התגית English).

    אז מה דעתכם\ן והאם  אתם\ן מצטרפים\ות?

     

    שאלה בפורום תפוז: Properties ב - .NET

    השאלה:

    יש לי את הקוד הבא בקלאס כל שהוא:

    private float _thickness;
    
    internal float _Thickness
    {
        get
        {
            return _thickness;
        }
        set
        {
             _thickness = value;
        }
    }

    השאלה שלי  היא מה ההבדל בין _thickness לבין _Thickness?

    אחד מהעקרונות ב - OOP (ר"ת של Object Oriented Programing) הוא Encapsulation (בעברית יכול להקרא גם "כימוס").

    נניח שאתה יוצר Class כלשהו שיש לו התנהגות מסויימת, מבחינת המפתח שמשתמש בו, הקלאס (להלן "המחלקה") היא קופסה שחורה שעושה משהו. (לדוגמה המחלקה Random מחזירה מספר רנדומלי. מבחינתך זה לא משנה איך).

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

    בכדי לחשוף את ה - thickness למפתח (נניח שאתה מעוניין לתת לו לראות מה הערך אך לא לשנות אותו), היה נהוג להשתמש במתודות שנקראות get_Thickness, ובכדי לקבוע את הערך ב - set_Tickness.

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

    internal sealed class MyClass
    {
        private float _thickness;
        
        public float get_Thickness()
        {
            return _thickness;
        }
        
        public void set_Thickness(float value)
        {
            if (value <= 0)
                throw new InvalidArgumentException("Thickness must be
    greater than 0!!!!11"
    ); _thickness = value; } }

    מיקרוסופט החליטו לתת פתרון למצב הזה (הקוד הזה מאוד מאוד נפוץ בתכנות OOPי), והציגו את ה -  Properties,
    הקוד עם Properties יראה כך:

    internal sealed class MyClass
    {
    
        private float _thickness;
        
        public float Thickness
        {
            get
            {
                return _thickness;
            }
            set
            {
                if (value <= 0)
                    throw new InvalidArgumentException("Thickness must be 
    greater than 0!!!!11"
    ); _thickness = value; } } }

    ל -get ול - set האלו קוראים Properties, (גם getter ו - setter)
    השימוש במחלקה יראה כך (בלי ועם Properties):

    // Sample code without properties
    MyClass mc = new MyClass();
    mc.set_Tickness(1.0);
    Console.WriteLine("{0}", mc.get_Tickness());
    
    // Sample code with properties:
    MyClass mc = new MyClass();
    mc.Thickness = 1.0;
    Console.WriteLine("{0}", mc.Thickness);

    בשורה תחתונה מדובר על אותה פונקציונליות, רק הקוד נראה יותר אסתטי, ודורש פחות כתיבה עם properties (ה - properties מתורגמים בסופו של דבר לפונקציות get_xxx ו - set_xxx דבר שה - CLR דואגת לו).

    דרך אגב Martin Fowler ו - Jeffrey Richter כתבו את דעתם והם לא ממש בעד העניין. מעניין לקרוא את דעתם.

    Posted: Mar 03 2008, 10:17 PM by OhadAston | with 1 comment(s)
    תגים:, ,