שלום,
לפני שהסתכלתי על הפתרון שהוצא, ניסיתי לכתוב את הקוד בעצמי.
כתבתי קוד שנראה לי שעובד ועונה על מה שהתבקשנו - כמה זמן לוקח לדני לרוץ והאם הוא יכול לרוץ מרתון בפחות מ-3 שעות.
זה לא יפה כמו הפתרון במחברת, אבל אני סקרן לדעת אם פיספסתי משהו ובגלל זה, זה נראה שונה?
הפתרון שלי:
def avarage_speed(time):
return 5 / time
time = float(input("Please input how many hours it took to run 5 KM "))
speed = avarage_speed(time)
print(“Danny’s speed is " + str(speed) + " KM per hour.”)
def run_marathon(speed):
return 3 * speed >= 42.195
print("Can danny run a marathon under 3 hours? " + str(run_marathon(speed)))
time = float(input("How many hours did it take to finish a 5km run? "))
km_per_hour = calculate_km_per_hour_for_5_km(time)
can_run_marathon_in_three_hours = check_if_run_marathon_in_three_hours(km_per_hour)
if can_run_marathon_in_three_hours:
print(“Yes you can!”)
else:
print(“No you can’t!”)
Yam
עדיף לחדד את שם הפונקציה average_speed – אדם שמסתכל על חתימת הפונקציה לא כ"כ מבין איזה קסם היא עושה, והמספר 5 שנמצא שם מוכיח שהפונקציה לא באמת מחשבת את המהירות הממוצעת למקרה הכללי.
מעבר לזה הקוד שלך יעבוד והוא אחלה, אבל הוא טיפה פחות מאורגן ולכן פחות מתאים להיות חלק ממערכת גדולה יותר. זה לא בהכרח רע ולפעמים כשאנחנו כותבים לעצמינו קוד נעדיף משהו זריז וטיפה פחות מסודר, אבל צריך להכיר שזו גישה אחת וזו אחרת
האם קיימת דרך לקצר את כמות הטקסט בקוד?
הכוונה שהקוד יהיה מסודר כמה שאפשר וקריא, אני מניחה שבעולם האמיתי לא משתמשים בכזו כמות של מילים פר משתנה.
יש לכם טריקים לקיצור שמות כך שעדיין נבין במה מדובר?
Yam
רק כדי לשבר את האוזן, שם לדוגמה של פונקציה מתוך קוד של ווינדוס: NtDCompositionValidateAndReferenceSystemVisualForHwndTarget.
אז זה אכן קיצוני ואין צורך להגזים, אבל אנחנו ממליצים לא להתקמצן על כמות התווים בשם הפונקציה כל עוד זה הופך אותה למובנת יותר
אם את רוצה להעמיק בענייני שמות, אני ממליץ על הפרק הראשון בספר Clean Code של Uncle Bob.