March 27th, 2011

main

классвьюшное

Когда я только начинал работать с Visual C, ClassView был отличной штукой. Но за прошедшие полтора с лишним десятка лет он не особо улучшился, а местами даже усложнил жизнь - особенно последняя версия.

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

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

На некоторое время все устаканилось, но когда подоспела 2010 студия, обновленный IntelliSense сошел на нашем проекте с ума, а аккуратно отсортированное дерево классов превратилось в страх и ужас - часть классов засветилась там по нескольку раз, при этом клик на имени класса запросто мог выкинуть не на полное, а на forward-описание, а клик по функциям и просто игнорироваться. Пришлось разбираться, но об этом уже в следующий раз.