Оптимизация класса для надлежащей практики модульного тестирования или это преждевременно?

Я видел (и искал) много вопросов в StackOverflow о преждевременной оптимизации - ходят слухи, что это корень всего зла. : PI признаюсь, что я часто виноват в этом; На самом деле я не оптимизирую скорость за счет разборчивости кода, но я перепишу свой код логическим образом, используя типы данных и методы, которые кажутся более подходящими для задачи (например, в ActionScript 3, используя типизированный вектор вместо нетипизированного массива для итерации), и если я смогу сделать свой код более элегантным, я сделаю это. Это обычно помогает мне понять мой код, и я обычно знаю, почему я делаю эти изменения.

В любом случае, Сегодня я подумал - в ООП мы продвигаем инкапсуляцию, пытаясь скрыть реализацию и продвигать интерфейс, чтобы классы были слабо связаны. Идея состоит в том, чтобы сделать что-то, что работает без необходимости знать, что происходит внутри - идея черного ящика.

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

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

Надеюсь, этот вопрос подходит для StackOverflow - я не нашел другого, который бы отвечал прямо на мой запрос.

Спасибо!

Редактировать: Задумавшись над вопросом, я понял, что «профилирование» могло быть правильным термином вместо «модульного теста»; модульное тестирование проверяет, что модуль работает должным образом, а профилирование проверяет производительность. Кроме того, часть вопроса, который я должен был задать раньше - не сокращает ли профилирование отдельных модулей после их создания время, необходимое для профилирования после завершения приложения?

Мой вопрос связан с разработкой игры, которую я пытаюсь сделать - Мне нужно создавать модули, такие как графический движок, что должен работать оптимально (будут ли они - другой рассказ: D). В приложении, где производительность менее важна, я, вероятно, не стал бы об этом беспокоиться.

5
задан jedd.ahyoung 31 March 2011 в 22:09
поделиться