Обновить
974.24

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга

Отличия рефакторинга от переписывания

Рефакторинг — это изменение с сохранением поведения. Также, пишут что это именно небольшое изменение, а большое — это реинжиниринг. Я бы скорее акцентировал внимание, что это изменение в замкнутой области.

Основное отличие от переписывания — внесённые изменения не требуют менять смежные модули, которые не подвергались рефакторингу.

Примерно как ремонт квартиры — после ремонта окна и двери стоят на том же месте, несущие стены и коммуникации не затронуты, а внутри стало приятнее.

И тут же признаки того, что рефакторинг пошёл не по плану:

  • Забыли какой‑то ранее работающий функционал.

  • Полезли ошибки в других местах.

При правильном планировании и последовательном проведении рефакторинга допустить такие ошибки довольно сложно.

План работ определяет область для изменений и её границы, в результате получаем набор точек (методов), которые останутся неизменными. Это границы изменяемого кода.

Если внешние обращения изменяются, иногда бывает полезным новый код писать отдельно от старого, и главная фишка тут в том, что можно по готовности переключать пограничные точки со старого кода на новый. А перед удалением старого кода ещё раз проверить, что весь старый код отключили и ничего не упустили.

Таким образом, в каждый момент времени код сохраняет свою работоспособность и не теряет связанности.

Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Метод Lego

Если вы хотя бы раз собирали набор Lego по приложенной схеме, вы помните основное правило: всё нужно делать строго последовательно и аккуратно. Допущенная ошибка где-то в середине конструкции может привести к тому, что вам придётся разбирать все последующие верхние уровни, чтобы её исправить.

Это же правило действует и при сборке мебели. Бывали ли у вас такие случаи, когда после сборки у вас оставалась какая-нибудь неиспользованная деталь? Вспомните, как сложно вернуться к тому шагу, где её нужно было использовать: придётся последовательно отменять все последующие шаги.

Программисты задумчиво дебажат старый код
Программисты задумчиво дебажат старый код

Суть метода Lego заключается в том, чтобы всё сразу делать максимально внимательно и правильно: писать код, конструировать систему, сочинять текст, собирать тумбочку. Конечно, это не обезопасит вас от ошибок.

Применение этого метода может потребовать больше времени и усилий. Он не вписывается в проекты, где основная философия разработки — это склепать на коленке кое-как работающий код. Но сколько времени уйдёт на рефакторинг такого кода, например, через полгода?

На практике применение метода Lego означает, что вы не оставляете после себя черновиков, костылей, заплаток и подпорок. Если уж взялись писать процедуру, то на выходе выдаёте красивый, проверенный, полностью работающий код. И никаких «To do» и технического долга. Возможно, потом придётся переписать или дополнить процедуру, но с учётом текущей версии условий она написана идеально.

Всего голосов 28: ↑28 и ↓0+30
Комментарии3

Программировать надо так, чтобы не было стыдно, когда твои исходники сольют.

А в идеале - сразу оупенсорсить, чтобы не было надежды, что твою кучку.. кода никто не заметит.

Всего голосов 12: ↑6 и ↓60
Комментарии2

Задачи для начинающих программистов

Многие начинающие разработчики задаются вопросом «а что же мне такое запрограммировать?».

Предлагаю такие простые программки, и жду в комментариях ваши варианты.

  • Игра "больше меньше".

    • Загадывается число от 1 до 1000, задача игрока - угадать число за 10 попыток.

  • Подсчет "дырочек" в тексте.

    • Например в слове "Windows" - 2 дырочки, а в слове "Linux" - 0 дырочек.

  • Приложение "Генератор паролей".

    • Можно задать длину, используемые символы и на выходе получить пароль.

Варианты посложнее, для тех кто освоил GUI

  • Рисовалка типа «Paint»

    • Конечно же, реализовывать такие сложные функции как «отмена» не стоит.

  • Игра «Жизнь Конвея»

    • Должна быть интерактивной - т.е. пользователь должен иметь возможность менять состояние клеток мышью или клавиатурой.

  • Калькулятор

    • Калькулятор с графическим интерфейсом, но без использования Eval() и подобного, обычный «простейший» калькулятор.

Всего голосов 13: ↑13 и ↓0+13
Комментарии0
12 ...
32

Вклад авторов