Я реализую класс для сравнения деревьев каталогов (в C#). Сначала я реализовал фактическое сравнение в конструкторе класса. Примерно так:Считается плохим дизайном делать длительные операции в конструкторе?
DirectoryComparer c = new DirectoryComparer("C:\\Dir1", "C:\\Dir2");
Но это не кажется «правильным» сделать возможную длительную операцию в конструкторе. Альтернативный способ состоит в том, чтобы сделать конструктор частным и добавить статический метод следующим образом:
DirectoryComparer c = DirectoryComparer.Compare("C:\\Dir1", "C:\\Dir2");
Как вы думаете? Вы ожидаете, что конструктор будет «быстрым»? Является ли второй пример лучше или это просто усложняет использование класса?
КСТАТИ:
Я не буду отмечать какой-либо ответ, как принято, потому что я не думаю, что это правильный ответ, просто предпочтения и вкус.
Edit:
Просто чтобы прояснить мой пример немного. Я не только заинтересован, если каталоги отличаются, но я также заинтересован в том, как они отличаются (какие файлы). Таким образом, простого значения возврата int не будет достаточно. Ответ cdragon76.myopenid.com на самом деле довольно близок к тому, что я хочу (+1 к вам).
Если вы не отметите ответ, возможно, это должна быть вики сообщества? – 2009-03-13 07:48:04
Я согласен [10chars] – 2009-03-13 07:51:28