Re: [CodeJam] WTF moments
От: Lexey Россия  
Дата: 18.04.16 21:09
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Продолжаю смотреть код в CodeJam.


S>Всё классно, но несколько типов/методов не дотягивают до общей (довольно высокой) планки.

S> Может, их в Experimental пока?

S>1. DisjointSetsBase выглядит как заготовка для чего-то большего.

S>С точки зрения незнакомого с матчастью клиента код выглядит как один большой WTF.

Соглашусь, интерфейс класса не слишком очевидный. Если у кого есть идеи, как сделать лучше, то готов выслушать.

S>Ну вот навскидку

S>* базовый класс не абстрактный

А зачем ему быть абстрактным? Абстрактных методов у него нет. Создать его не выйдет, ибо protected .ctor

S>* как часть контракта торчит T (в идеале переименовать в TNode), который в публичном API недоступен,


Зато доступен в protected. Используется, чтобы лишние касты не городить потом.

S>* никаких проверок индексов


Это есть, да.

S>но это чисто косвенные признаки, главная проблема в том, что никаких реальных сценариев использования при дизайне API не использовалось.

S>Ну, или эти сценарии настолько экзотичные, что из API их не восстановишь.

Использовались. Основной сценарий был такой:
1) Сконструировать из пачки элементов.
2) Объединить некоторые из них.
3) Для каждого из элементов определить, в какое объединение он попал.
"Будь достоин победы" (c) 8th Wizard's rule.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.