Я видел (и искал) много вопросов в StackOverflow о преждевременной оптимизации - на улице говорят, что это корень всего зла. : P Признаюсь, я часто виновен в этом; Я не очень оптимизирую скорость за счет разборчивости кода, но я переписываю свой код логическими способами, используя типы данных и методы, которые кажутся более подходящими для задачи (например, в ActionScript 3, используя типизированный Vector вместо нетипизированного Array для итерации) и если я смогу сделать свой код более элегантным, я сделаю это. Обычно это помогает мне понять мой код, и я обычно знаю, почему я делаю эти изменения.
Во всяком случае, я думал сегодня - в ООП мы продвигаем инкапсуляцию, пытаясь скрыть реализацию и продвигать интерфейс, чтобы классы были слабо связаны. Идея состоит в том, чтобы создать что-то, что работает без необходимости знать, что происходит внутри - идея черного ящика.
Таким образом, вот мой вопрос - разумно ли пытаться провести глубокую оптимизацию кода на уровне класса, поскольку ООП способствует модульности? Или это попадает в категорию преждевременной оптимизации? Я думаю, что если вы используете язык, который легко поддерживает модульное тестирование, вы можете тестировать, тестировать и оптимизировать класс, потому что он сам по себе является модулем, который принимает входные данные и генерирует выходные данные. Но, как один человек, пишущий код, я не знаю, стоит ли ждать, пока проект не будет полностью завершен, чтобы начать оптимизацию.
Для справки: я никогда раньше не работал в команде, поэтому что-то очевидное для разработчиков, имеющих такой опыт, может быть чуждо мне.
Надеюсь, этот вопрос подходит для StackOverflow - я не нашел другого, который бы прямо ответил на мой запрос.
Спасибо!
Редактировать: Размышляя над вопросом, я понимаю, что "профилирование" могло быть правильным термином вместо "модульного теста"; модульное тестирование проверяет, что модуль работает должным образом, а профилирование проверяет производительность. Кроме того, часть вопроса, который я должен был задать раньше, - не уменьшает ли профилирование отдельных модулей после их создания время профилирования после завершения приложения?
Мой вопрос связан с разработкой игры, которую я пытаюсь сделать - я должен создать модули, такие как графический движок, которые должны работать оптимально (будет ли это другая история: D) , В приложении, где производительность была менее важной, я бы не стал беспокоиться об этом.