Существуют ли общие правила для разработки хороших шаблонов классов? - PullRequest
2 голосов
/ 31 марта 2009

Я работаю в отделе, где люди создают (или выбирают) алгоритмы, которые они реализуют в программном обеспечении небольшого размера, чтобы оптимизировать некоторые связанные с полем задачи. Большинство моих коллег знают больше о математическом моделировании и решателях, чем о программировании.

У меня лично несколько лет опыта разработки шаблонов классов C ++. Я довольно хорошо знаю, как разрабатывать шаблоны классов, которые представляют алгоритмы, но я не могу разработать каждый программный продукт, который пишут мои коллеги (не хватает времени, недостаточно интереса).

Поэтому моя цель - попытаться научить моих коллег превращать функциональные возможности и алгоритмы, о которых они думают, в шаблоны классов. Аргументы шаблона могут быть типами структуры или классами политики. Я чувствую, что мне нужно придумать набор правил «делай / не делай», но я не могу их изобрести.

Для меня цель хорошего дизайна шаблона класса - максимизировать читаемость.

У вас лично есть правила для разработки хороших шаблонов классов? Есть ли правильный процесс от описания функциональности до дизайна шаблона класса?

EDIT

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

Ответы [ 2 ]

2 голосов
/ 31 марта 2009

Я не хочу идти напролет на вашем параде, но по своему опыту я стараюсь заинтересовать непрограммистов (или людей, для которых программирование не является их основной "вещью") чем-то столь же загадочным, как написание хорошего шаблонного кода в C ++ - это сизифова задача.

Черт, я работаю в отделе с большим количеством очень хороших программистов на С ++, и даже в этом случае заставить организацию взять на себя обязательство внедрить новую технологию не всегда легко. Если ваши ребята хорошие математики и знают достаточно программирования, чтобы попытаться справиться с этим, попытка навязать им мандат на то, что им вместо этого нужно написать общий C ++, будет очень непростой задачей.

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

2 голосов
/ 31 марта 2009

В вашем случае я бы разработал такую ​​структуру, которая позволила бы вашим коллегам думать только о формулах, математике и решателях.

Я думаю, что все «хорошие в математике» парни, если их работа не только реализует математические функции, должны знать «Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения».

Вы также можете обратить внимание своих коллег на алгоритмы повышения. Существует библиотека графов , которую вы можете использовать для нужд своего проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...