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

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

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

תכנון נכון של קוד ארוך

מתוזמן נעוץ נעול הועבר תכנות
10 פוסטים 5 כותבים 186 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • MusiCodeM מנותק
    MusiCodeM מנותק
    MusiCode
    כתב ב נערך לאחרונה על ידי MusiCode
    #1

    יש לי קוד של ניהול משתמש (טלפוני) לאורך השימוש בשלוחה.

    כרגע זה נראה כך (דוגמא):

    האובייקט call מנהל את השיחה, ומשמיע למשתמש מה שצריך וכו'.

    class run {
    
    	constructor(call) {
    		this.call = call;
    	}
    
    	async start() {
    		await this.get_var();
    	}
    
    	async get_var() {
    
    		let massage = [{ type: "text", data: "123" }];
    		let option = { max: 10, val_name: "txt" };
    
    		r = await this.call.read(massage, _, option);
    
    		await this.play(r);
    
    	}
    
    	async play(r) {
    		switch (r) {
    			case "value":
    				this.set_val();
    				break;
    
    			case "value2":
    				this.set_val2();
    				break;
    
    			default:
    				this.get_var();
    				break;
    		}
    	}
    
    	async data() {
    		//...
    	}
    
    	//...
    }
    
    const call = { /* ... */ };
    
    const r = new run(call);
    r.start();
    

    יש דרכים אחרות לארגן קוד ארוך עם מליון IF's הפנייות וכו'?

    אולי יש קישורים להדרכות איך בונים קוד כזה.

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

      @MusiCode
      בגדול לחלק לפונקציות וקלאסים,
      ובמידה והשפה מאפשרת, להעדיף שימוש בswitch על פני IF ELSE וכו

      אין טסט כמו פרודקשן.

      המייל שלי urivpn@gmail.com

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

        תלוי מה המקרה, אבל לפעמים אפשר גם לממש עם המסד נתונים. זאת אומרת שלעשות טבלת רשימת פונקציות במסד הנתונים (או יותר טוב טבלת קבוצות פונקציות), ועוד שדה 'get-value' שבו אמור להיות ההקשה המתקבלת מהקליינט וכאשר הפונקציה המבוקשת תסונן לפי השדה.

        ואפשר לממש את זה גם אם יש היררכיה של הקשות (תפריט ותפריט משנה

        1-2-1 , 1-2-2
        

        ) ע"י שבשדה 'get-value' יהיה כתוב 1-2-1, וכן 1-2-2

        תגובה 1 תגובה אחרונה
        3
        • י מנותק
          י מנותק
          יוסף בן שמעון
          כתב ב נערך לאחרונה על ידי יוסף בן שמעון
          #4

          @MusiCode אמר בתכנון נכון של קוד ארוך:

          לא מסתדר לי השם של המחלקה, run אמור להיות שם של מתודה לא של קלאס
          בשורה 16 איתחלת משתנה בלי let, נראה לי שבתקן החדש זה שגיאת קומפילציה, וגם אם לא זה הופך להיות משתנה גלובלי וזה יצור לך התנגשויות
          עוד משהו שאני לא בטוח אבל כך זכור לי, אם המתודות לא מחזירות את הפרומיס, לא יעזור שהם עם await כי כשאתה קורא להם ממתודה אחרת המתודה השניה תמשיך לרוץ, צריך להחזיר את הערך של הפרומיס ובמתודה הקוראת להשתמש ב then

          יש דרכים אחרות לארגן קוד ארוך עם מליון IF's הפנייות וכו'?

          לא הבנתי איפה יש מליון איפ והפנייות זה נראה מתוכנן בסדר

          תגובה 1 תגובה אחרונה
          1
          • MusiCodeM מנותק
            MusiCodeM מנותק
            MusiCode
            כתב ב נערך לאחרונה על ידי
            #5

            @יוסף-בן-שמעון אמר בתכנון נכון של קוד ארוך:

            לא מסתדר לי השם של המחלקה, run אמור להיות שם של מתודה לא של קלאס

            זה הדגמה שכתבתי ברגע.

            בשורה 16 איתחלת משתנה בלי let, נראה לי שבתקן החדש זה שגיאת קומפילציה, וגם אם לא זה הופך להיות משתנה גלובלי וזה יצור לך התנגשויות

            כנ"ל

            עוד משהו שאני לא בטוח אבל כך זכור לי, אם המתודות לא מחזירות את הפרומיס, לא יעזור שהם עם await כי כשאתה קורא להם ממתודה אחרת המתודה השניה תמשיך לרוץ, צריך להחזיר את הערך של הפרומיס ובמתודה הקוראת להשתמש ב then

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

            יש דרכים אחרות לארגן קוד ארוך עם מליון IF's הפנייות וכו'?

            לא הבנתי איפה יש מליון איפ והפנייות זה נראה מתוכנן בסדר

            כן, רק שזה אמור להיות בכפול שמונה...

            זה הדרך הכי טובה?

            י תגובה 1 תגובה אחרונה
            1
            • י מנותק
              י מנותק
              יוסף בן שמעון
              השיב לMusiCode ב נערך לאחרונה על ידי
              #6

              @MusiCode אמר בתכנון נכון של קוד ארוך:

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

              תסביר מה אתה מתכוין, מחלקה כזו:

              class Class{
                  run(){
                      this.do()
                      console.log("finish")
                  }
                  async do(){
                      await new Promise(resolve => {
                          setTimeout(()=>{
                              console.log("start");
                              resolve()
                          }, 1)
                      })
                  }
              }
              
              new Class().run()
              

              תדפיס את הפיניש לפני הסטרט, בגלל שהמתודה לא מחזירה פרומיס

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

                @יוסף-בן-שמעון אמר בתכנון נכון של קוד ארוך:

                תדפיס את הפיניש לפני הסטרט, בגלל שהמתודה לא מחזירה פרומיס

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

                console.log((async _=> 1)())
                // Promise {<resolved>: 1}
                

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

                MusiCodeM תגובה 1 תגובה אחרונה
                3
                • MusiCodeM מנותק
                  MusiCodeM מנותק
                  MusiCode
                  השיב לyossiz ב נערך לאחרונה על ידי
                  #8

                  @yossiz אגב, איך יוצרים פונקציה שרצה אסינכרוני (קולבק למשל)?

                  רק באמצעות פרומיס שלא ימומש?

                  async function callback() {
                  	await new Promise((resolve) => {
                  		setTimeout(() => resolve(), 0);
                  	})
                  	console.log("finish!");
                  }
                  
                  (function call() {
                  
                  	callback(); // אין המתנה לפרומיס
                  	console.log("start...");
                  })();
                  

                  או שכל פונקציה היא בחזקת קולבק?

                  function callback() {
                  
                  	setTimeout(() => console.log("finish!"), 0);
                  }
                  
                  (function call() {
                  
                  	callback(); // אין המתנה לפרומיס
                  	console.log("start...");
                  })();
                  

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

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

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

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

                    תגובה 1 תגובה אחרונה
                    1
                    • MusiCodeM מנותק
                      MusiCodeM מנותק
                      MusiCode
                      כתב ב נערך לאחרונה על ידי
                      #10

                      יש עוד דרך להריץ פונקציות בצורה א-סנכרונית,
                      חוץ מפרומיס לא ממומש?

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

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

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

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