Tony_bonelli
тем более что до этого только блок-схемы на информатике рисовал
Да не надо комплексовать. За день программировать не научишься, как ни старайся. Только тысячи неправильных кодов, написанных собственноручно, дают чутьё в конечном итоге. Даже не прочитанные книги, а именно написанные и опробованные во времени коды.
Для начала нужно усвоить основные правила: программа должна быть правильной, понятной и легко меняемой.
Это относится ко всем программам одинаково, будь программа хоть на десять строк, хоть на сто строк, хоть на тысячу строк или хоть на десять тысяч строк.
Вот представь, что у тебя программа не на двадцать строк, а на двести строк. Как ты поймёшь, правильная ли она? А если в ней надо будет заменить адрес сервера, порт и сообщение ответа сервера, как ты их все найдёшь, чтобы ни одно не пропустить, не забыть? А когда заменишь, как ты поймёшь, правильная ли она после этой замены и не нарушилось ли что-нибудь?
Все эти проблемы надо заранее убрать, поэтому первым делом надо абстрагировать данные (на сленге разработчиков это называется убрать магические числа)
HOST = '176.32.188.106'
PORT = 51435
SUCCESS_MESSAGE = b'250 Access granted\n'
...
sock.connect((HOST, PORT))
...
if data == SUCCESS_MESSAGE:
...
Магические числа называются магическими потому, что, глядя на них в середине кода, ты никогда точно не можешь сказать, что это за числа.
Строка
sock.connect(('176.32.188.106', 51435))
выглядит неинформативно. Толи это ip-адрес и порт, толи это ip-адрес и таймаут, толи это ip-адрес и размер пакета, - то есть это число осуществляет какую-то неизвестную магию. Без документации, без точных воспоминаний ты не можешь уверенно сказать, что именно делает строка, что настраивается в сокете.
Строка
sock.connect((HOST, PORT))
читается сразу однозначно.
Какие ещё преимущества даёт такое абстрагирование. Адрес сервера может поменяться, а таких строк в коде может быть десять, а не одна, как в твоём случае. Так, с абстрагированием, ты меняешь адрес сервера только в одном месте, в то время как без абстрагирования ты должен поменять десять строк в коде, а потом ещё проверять, что из-за этих изменений ничего не нарушилось и программа продолжает работать правильно. А что нужно сделать, чтобы понять, что программа на двести строк работает правильно?
tags: magic numbers