דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. מה התועלת משימוש באובייקט?

מה התועלת משימוש באובייקט?

מתוזמן נעוץ נעול הועבר תכנות
3 פוסטים 2 כותבים 132 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • איש נחמדא מנותק
    איש נחמדא מנותק
    איש נחמד
    כתב ב נערך לאחרונה על ידי
    #1

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

    הבסיס נראה כך:

    let monthly_data = class {
      constructor(month, year) {
        this.month = month;
        this.year = year;
      }
      
      get_data = function(){
        var self = this;
        return $.ajax({
          type: 'POST',
          url: 'data.php',
          data: { m: this.month, y: this.year, action: 'get_monthly_data' },
          dataType: "json",
          success: function(data) {
            console.log("Data added!", data);
            self.data = data;
          },
          error: function(){
            swal.fire('ajax error');
          }
        }).fail(function(){
            swal.fire('error');
        });
          
          
      }
      
      get weeks(){
          var weeks = [];
          return weeks;
      }
      
    };
        
    function get_monthly_data(m, y){
      var ttt = new monthly_data(m, y);
      ttt.get_data().then(function(data){
        console.log(data.msg);
      })
        
    }
    

    כפי שניתן לראות - הפונקציה (method) get_data בקלאס monthly_data מחזירה פרומיס שמחזיר את המידע מ-AJAX.
    במבט שטחי נראה שיכולתי פשוט ליצור פונקציה רגילה שתחזיר את המידע מה-AJAX. האם יש תועלת בכך שאני מכניס את זה לתוך תבנית של אובייקט?
    האם יש דרך לשפר את הקוד?

    להיות איש נחמד זה מחייב...

    yossizY תגובה 1 תגובה אחרונה
    0
    • yossizY מנותק
      yossizY מנותק
      yossiz
      השיב לאיש נחמד ב נערך לאחרונה על ידי yossiz
      #2

      @איש-נחמד לפום ריהטא אני לא רואה פה שום תועלת בעובדה שזה קלאס. אדרבה בלי קלאס הקוד יותר פשוט.
      קלאס יכול להיות שימושי כאשר יש state אחר חוץ מהארגומנטים עצמם. או כאשר אתה מוסיף פונקציות utility על הקלאס שמפשטים פעולות נפוצות.
      אבל פה לקחת פונקציה פשוטה והפכת אותה לקלאס קיבלת רק יותר מלל בלי שום תועלת.

      האם לא ניתן לפשט את הקוד שלך לזה:

      function get_monthly_data (m, y) {
        return $.ajax({
          type: 'POST',
          url: 'data.php',
          data: { action: 'get_monthly_data', m, y },
          dataType: "json"
        })
      }
      
      // usage
      get_monthly_data(m, y).then(
        (data, textStatus, jqXHR) => doStuff(),
        (jqXHR, textStatus, errorThrown) => dealWithIt()
      )
      

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

      תגובה 1 תגובה אחרונה
      3
      • yossizY מנותק
        yossizY מנותק
        yossiz
        כתב ב נערך לאחרונה על ידי yossiz
        #3

        @איש-נחמד תחשוב על קלאס בצורה זו: זה אבסטרקציה לקבוצה של דאטה שקשורים אחד לשני ויש להם התנהגויות תלויות הדדי.

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

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

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

        גילוי נאות: אני לא משתמש גדול של OOP, וגם לא מבין גדול בנושא. כתבתי הנלע"ד כעת.

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        תגובה 1 תגובה אחרונה
        8

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום