В настоящее время у нас есть 3 разработчика с несколькими противоречивыми стилями, и я ищу способ принести мир в королевство ...
Кодеры:
Foo 1 : Любит использовать Func's & Action внутри public-методов. Он использует действия для псевдонимов длинных вызовов методов и Func для выполнения простых задач, которые могут быть выражены в 1 или 2 строках и будут часто использоваться в коде
Плюсы: Основная часть его кода лаконична и очень удобочитаема, часто с одним или двумя открытыми методами на класс и редко с любыми закрытыми методами.
Минусы: Методы запуска содержат блоки кода, обогащенного лямбда-кодами, которые другие разработчики не любят читать; и, в некоторых случаях, может содержать функции высшего порядка, которые другие разработчики REALLY не любят читать.
Foo 2: Любит создавать приватный метод для (почти) всего, что должен делать публичный метод.
Плюсы : Открытые методы остаются маленькими и удобочитаемыми (для всех разработчиков).
Минусы : частных методов множество. С частными методами, которые вызывают в другие частные методы, которые вызывают в ... и т. Д., И т. Д. Сложность навигации по коду.
Foo 3: Любит создавать открытый класс с единственным открытым методом для каждой нетривиальной задачи, которую необходимо выполнить, а затем вводить их в зависимости от других объектов.
Плюсы : Легко тестируемый, простой для понимания (один объект, одна ответственность).
Минусы : проект напичкан классами, открывая несколько файлов классов, чтобы понять, что делает код, делая навигацию неудобной.
Было бы здорово использовать все эти техники ...
Foo-1 Имеет действительно хороший, читаемый (почти dsl-подобный) код ... по большей части, за исключением всех лямбда-махинаций Action и Func, объединенных в начале метода.
Foo-3 Имеет хорошо тестируемый и расширяемый код, который для некоторых решений кажется просто «поясом и скобками», а также имеет некоторые недостатки навигации по коду (постоянно нажимая F12 в VS и открывая 5 других файлов .cs, чтобы узнать что делает один метод).
И Foo-2 ... Ну, я не уверен, что мне что-то нравится в одном огромном файле .cs с 2 открытыми методами и 12 закрытыми, за исключением того факта, что юниорам легче копаться.
Признаюсь, я сильно упрощал объяснения этих стилей кодирования; но если кто-то знает какие-либо закономерности, практики или дипломатические маневры, которые могут помочь объединить наших трех разработчиков (не просто сказав никому из них просто «остановить это!»), это было бы здорово.
С точки зрения осуществимости:
- Стиль Foo-1 встречает наибольшее сопротивление из-за того, что некоторые разработчики считают, что лямбда и / или Func плохо читаются.
- Стиль Foo-2 встречается с меньшим сопротивлением, так как в него так легко попасть.
- Стиль Foo-3 требует самого дальновидного мышления, и его трудно реализовать, когда времени мало.
Есть какие-нибудь идеи по поводу некоторых стилей или соглашений кодирования, которые могут сделать эту работу?