על שמות משתנים ופונקציות
18/06/2018
אנשים אוהבים לדבר על שפות תכנות "לכתיבה בלבד" כלומר כאלה שאי אפשר לקרוא קוד שכתוב בהן. אנחנו שוכחים שקוד קריא הוא מאפיין של המתכנתים הרבה יותר מאשר של השפה. הנה דוגמא קצרה עם אותה התוכנית באותה שפה ובשתי גירסאות שונות. תגידו אתם את מה הייתם מעדיפים לקרוא:
גירסא 1:
from random import randint
x = randint(1, 100)
while True:
y = int(input('Please guess the value: '))
if randint(1, 100) > 80:
messages = ['Too large', 'Too small']
print(messages[randint(0, 1)])
else:
if x > y:
print('Too small')
elif x < y:
print('Too large')
else:
print('Bingo! You win')
break
גירסא 2:
from random import randint
def should_lie(*_, lying_frequency=20):
return randint(1, 100) < lying_frequency
def random_message():
messages = ['Too large', 'Too small']
return messages[randint(0, 1)]
secret_value = randint(1, 100)
while True:
user_guess = int(input('Please guess the value: '))
if should_lie(lying_frequency=20):
print(random_message())
else:
if secret_value > user_guess:
print('Too small')
elif secret_value < user_guess:
print('Too large')
else:
print('Bingo! You win')
break
המעבר מגירסא 1 ל-2 דורש מעט מאוד מחשבה. כל מה שצריך הוא להבין את מטרת התוכנית ולתת שמות שמתאימים למטרה. אבל כשמגיעים לגירסא 2 חודש אחרי ברור לגמרי מה המשמעות של כל דבר. אפילו שהתוצאה ארוכה יותר בכמה שורות.