דרך לפתור תרגילים

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

תודה

לייק 1

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

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

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

לייק 1

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

כנל בנוגע לפירוק לפונקציות, אם אפשר לפרק פעולות שחוזרות על עצמם לפונקציות זה עדיף.
לפעמים אם התרגילים מאוד פשוטים אז בשלב הזה לא חייב.
למשל fizz buzz - אפשר לעשות את זה ב3 פונקציות סופר קצרות, או בפונקציה אחת קצרה.
בשלבים האלה זה לא נראה לי קריטי כי סה"כ הקוד הוא מאוד קצר.
אבל צריך לחשוב על זה שבתוכנות גדולות ומורכבות
עדיף שתהיה חלוקה לתת פעולות כפי שהסבירו בוידאו, כי ככה יותר קל:

  1. לתחזק את הקוד
  2. לעלות על בעיות
  3. להימנע מטעויות.
לייק 1