У меня сильный опыт работы с Java / Groovy, и я был назначен в команду, которая поддерживает довольно большую базу кода C для административного программного обеспечения.
Некоторые болевые точки, такие как работа с BLOB-объектами в базе данных или создание отчетов в PDF и Excel, были перенесены в веб-службу Java.
Однако, как разработчик Java, я немного смущен некоторыми аспектами кода:
- это многословно (особенно когда речь идет об «исключении»)
- есть много огромных методов (метод с более чем 2000 строк)
- нет сложных структур данных (я очень скучаю по List, Set и Map)
- нет разделения на проблемы (SQL радостно смешал весь код)
В результате я чувствую, что бизнес спрятан в тоннах технического кода, и мой мозг, сформированный с помощью Object Oriented и щепотки функционального программирования, не чувствует себя спокойно.
Хорошая сторона проекта в том, что код прост: нет фреймворка, нет манипуляций с байт-кодом во время выполнения, нет AOP. И сервер может одновременно отвечать более чем 10000 пользователям на одной машине, используя меньше памяти, чем нужно Java, чтобы выплюнуть «привет мир».
Я хочу научиться писать код на C в соответствии с общепринятыми современными принципами. Существуют ли общепринятые принципы того, как современный С должен быть написан и структурирован?
Нечто похожее на книгу «Эффективная Java», но для C.
Изменить с учетом ответов и комментариев:
- Я постараюсь адаптировать свое мышление к коду C, а не пытаться отразить его в ООП.
- Я начал сканировать и прочитать рекомендуемые руководства по стилю кодирования из комментария (Стандарты кодирования GNU и Стиль кодирования ядра Linux).
- Затем я попытаюсь предложить этот стиль кода моим коллегам. Самым сложным может быть убедить коллег в том, что огромный метод можно разбить на более мелкие части и что с помощью метода можно избежать повторения тех же четырех строк кода обработки ошибок.