Что я изучал (и преподаю) в разработке программного обеспечения, так это то, что дублирование кода является корнем всего зла. С другой стороны, мне довольно сложно объяснить, как эту концепцию следует применять при разработке веб-приложений.
Позвольте мне уточнить ... Проверка ввода и данных может быть важной частью веб-приложения. Иногда эта проверка может быть довольно сложной. Например, я работал над редактором головоломки, и проверка состояла в проверке правильности операции или перемещения. Затем нужно было проверить нетривиальные правила.
Естественно, проверка должна выполняться на стороне сервера, чтобы обеспечить согласованность и качество хранимых данных. Однако для обеспечения бесперебойного взаимодействия с пользователем необходимо выполнить проверку на стороне клиента.
В большинстве случаев код на стороне клиента и на стороне сервера написан на разных языках (например, javascript / Python), поэтому код проверки должен быть написан дважды. Однако в моем единственном опыте работы с GWT / Java (Java с обеих сторон) я обнаружил, что значительная часть кода проверки может быть повторно использована. Казалось, что все стало проще: обслуживание, рефакторинг, отладка ...
Итак, мой вопрос к вам: как вы решаете проблемы, связанные с дублированием кода в проектах, где языки клиента и сервера различаются?