Я действительно не пишу большие проекты. Я не поддерживаю огромную базу данных и не имею дело с миллионами строк кода.
Мой код - это, в основном, "скриптовые" вещи - вещи для проверки математических функций или для моделирования чего-либо - "научное программирование". Самые длинные программы, над которыми я работал до сих пор, - это пара сотен строк кода, а большинство программ, над которыми я работаю, - около 150.
Мой код тоже дерьмо. Я понял это на днях, когда пытался найти файл, который написал некоторое время назад, но который я, вероятно, переписал и что я не использую контроль версий, что, вероятно, заставляет многих из вас мучиться от моей глупости.
Стиль моего кода запутан и наполнен устаревшими комментариями, отмечающими альтернативные способы сделать что-то или скопированные строки кода. Хотя имена переменных всегда начинаются очень хорошо и описательно, так как я добавляю или изменяю что-то, например, что-то новое, что кто-то хочет протестировать, код накладывается поверх и перезаписывается, и потому что я чувствую, что эта вещь должна быть быстро протестирована теперь, когда я у меня есть рамки, я начинаю использовать дрянные имена переменных, и файл отправляется в банк.
В проекте, над которым я сейчас работаю, я нахожусь в фазе, когда все это возвращается, чтобы сильно укусить меня. Но проблема в том, что (кроме использования контроля версий, создания нового файла для каждой новой итерации и записи всего этого в текстовый файл где-нибудь, что, вероятно, значительно поможет в ситуации), я не знаю, как продолжить улучшение мой настоящий стиль кодирования.
Нужно ли модульное тестирование для написания небольших кусков кода? Как насчет ООП? Какие подходы хороши для быстрого написания хорошего, чистого кода при «научном программировании», а не над большими проектами?
Я задаю эти вопросы, потому что часто само программирование не очень сложно. Это больше о математике или науке, которые я тестирую или исследую с помощью программирования. Например, нужен ли класс, когда две переменные и функция могут позаботиться об этом? (Рассмотрим также, как правило, ситуации, когда скорость программы предпочтительнее, чем на более быстром конце - когда вы выполняете более 25 000 000 временных шагов моделирования, вы как бы этого хотите.)
Возможно, это слишком широко, и если так, я прошу прощения, но, глядя на книги по программированию, они, кажется, часто рассматриваются в более крупных проектах. Мой код не нуждается в ООП, и он уже чертовски короткий, поэтому он не похож на «о, но файл будет уменьшен на тысячу строк, если мы сделаем это!» Я хочу знать, как «начать все сначала» и аккуратно программировать эти небольшие, более быстрые проекты.
Я был бы рад предоставить более конкретные детали, но чем более общий совет, тем более полезным, я думаю. Я программирую на Python 3.
Кто-то предложил дубликат. Позвольте мне пояснить, что я не говорю о прямом игнорировании стандартных стандартов программирования. Очевидно, есть причина, по которой эти стандарты существуют. Но, с другой стороны, действительно ли имеет смысл писать код, который говорит, что ООП, когда некоторые стандартные вещи могли бы быть выполнены, было бы гораздо быстрее писать, и был бы схожим уровнем читаемости из-за короткости программа?
Есть исключения. Кроме того, есть, вероятно, стандарты для научного программирования, помимо простых стандартов. Я спрашиваю и о них. Дело не в том, что нормальные стандарты кодирования должны игнорироваться при написании научного кода, а в написании чистого научного кода!
Обновить
Просто подумал, что добавлю обновление "не совсем на неделю позже". Все ваши советы были чрезвычайно полезны. Сейчас я использую контроль версий - git, с git kraken для графического интерфейса. Он очень прост в использовании и значительно очистил мои файлы - больше нет необходимости в старых файлах или в старых версиях кода, закомментированных «на всякий случай».
Я также установил Pylint и запустил его на весь мой код. Один файл изначально получил отрицательную оценку; Я даже не уверен, как это было возможно. Мой основной файл начинался с отметки ~ 1.83 / 10, а сейчас - ~ 9.1 / 10. Весь код теперь довольно хорошо соответствует стандартам. Я также пробежался по нему своими собственными глазами, обновляя имена переменных, которые стали ... хм ... ошибочными, и искал разделы для рефакторинга.
В частности, я недавно задал вопрос на этом сайте о рефакторинге одной из моих основных функций, и теперь она намного чище и намного короче: вместо длинной раздутой функции, заполненной если / еще, теперь она меньше половины Размер и гораздо проще понять, что происходит.
Мой следующий шаг - реализация «модульного тестирования». Под этим я подразумеваю файл, который я могу запустить в своем главном файле, который просматривает все функции в нем с помощью операторов assert и try / excepts, что, вероятно, не лучший способ сделать это, и приводит к большому количеству дублирующегося кода, но я буду продолжать читать и попытаюсь выяснить, как сделать это лучше.
Я также значительно обновил документацию, которую уже написал, и добавил дополнительные файлы, такие как электронная таблица Excel, документация и связанный документ, в репозиторий github. Сейчас это похоже на настоящий программный проект.
Итак ... Я думаю, это все, чтобы сказать: спасибо .