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

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

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

תכנון פונקציה: האם לשים פרמטרים מרובים או מערך

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

    שפות: c# / js

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

    מה השיקול שלך לעשות לפונקציה האם 'פרמטרים מרובים', או מערך

    • ביצועים
    • תחזוקה ותפעול
    תגובה 1 תגובה אחרונה
    1
    • OdedDvirO מנותק
      OdedDvirO מנותק
      OdedDvir
      כתב ב נערך לאחרונה על ידי OdedDvir
      #2

      לא זה ולא זה.
      הדרך הנכונה היא ליצור אובייקט שמכיל את כל השדות ולהעביר אותו לפונקציה.
      כך C#:

      public record JobSpecifications {
         public string JobName {get; set;}
         public double WorkHours {get; set;}
         ...
      }
      
      public decimal CalculatePrice(JobSpecifications specs)
      {
         ...
         return price;
      }
      
      

      זה יעיל מכל הבחינות, והרבה יותר קל לתחזוקה.

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

        השאלה וגם התשובה מדברים על תכנות רגיל, לא OOP.
        בOOP בד"כ הפרמטרים מרכיבים מחלקות שמייצגות את הישויות השונות, והפונקציה היא בד"כ חלק מאחת הישויות.

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        0
        • OdedDvirO מנותק
          OdedDvirO מנותק
          OdedDvir
          כתב ב נערך לאחרונה על ידי
          #4

          ליתר ביאור, דוד התכוון שאפשר ליישם את הפונקציה כחלק מהאובייקט, כך:

          public class Job {
             public string JobName {get; set;}
             public double WorkHours {get; set;}
             ...
             public decimal CalculatePrice()
             {
                ...
                return price;
             }
          }
          

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

          dovidD תגובה 1 תגובה אחרונה
          2
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            השיב לOdedDvir ב נערך לאחרונה על ידי dovid
            #5

            @OdedDvir לא בהכרח התכוונתי לזה, כתבתי ש"הפונקציה היא בד"כ חלק מאחת הישויות".
            החלוקה שלך בין מקרה שככה נח למקרה שבה יש חלוקת בין לוגיקה לנתונים היא מצויינת וככה אני עושה לרוב, אבל היא לא עולה בקנה אחד עם עקרונות הOOP, שלפיהם פונקציה היא תמיד פעולה של ישות, למשל חישוב מחיר זה פעולה או של המוצר או של החשבונית, או של ישות של פריט בחשבונית.

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            2
            • OdedDvirO מנותק
              OdedDvirO מנותק
              OdedDvir
              כתב ב נערך לאחרונה על ידי OdedDvir
              #6

              עכשיו הבנתי יותר את דבריך, ונראה לי שבעצם כיוונתי לאותו הדבר כשכתבתי

              ולמקם אותה במחלקה אחרת שאחראית על הלוגיקה העסקית

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

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

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

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

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