Просмотров: 2272 шт.
В ходе работы мне постоянно приходилось сталкиваться с великим множеством исходников.. в большинстве случаев то, что я видел оставляло желать лучшего.. порой находишь абсолютно абсурдные вещи (что самое странное - работающие в итоге).. я понимаю, что приводить свой код в порядок сразу же во время работы в некоторой степени утомительное занятие.. но авторы уже на следующий же день не могут нормально разобраться в том, что сами писали..
Собственно если подитожить -->
*****
1. Все знание об отличиях С от С++ сводится к наличию единственного класса, единственный экземпляр которого инстанцирован в структуру(!), что само по себе нормально, за исключением того вопроса на фига это там было нужно.
2. Догадайтесь как обстоят дела с выделением памяти? Именно, незабвенный malloc. По некоторому стечению обстоятельств, функций free я обнаружил меньше :
3. С потоками такая же напряженнка, как и с выделением new. #include и точка, нафиг нам стримы?
4. Собственно от чего я сегодня опупел - static-функции вне класса. Честно сознаюсь, никогда так не извращался, посему тот факт, что я её фиг увижу за пределами единицы трансляции поверг меня в уныние. Нэймспейсы, видимо, отменили специально для "аффтара". Для чего это вообще делалось, так и не понял.
5. Об RTTI тоже автору ничего не известно. Следствие - около полусотни варнингов об опасном присваивании при компиляции.
6. Никакого намека на STL. Я, конечно, рад что в программе так классно реализованы операции с массивами, массивами указателей, массивами указателей на указатели, указателями на массивы указателей на указатели. Но, блин, чтоб выбрать элемент по имени, мне перебор прикажете делать?
7. Отдельная песня - это имена переменных и функций. Ни один шпион не догадается. Если комменты не прочитает. Вот только комменты в .h, а нужно работать с реализацией.
Вот как вы думаете, зачем нужен следующий код:
void stdexitcls(char s, float pt, float sl, int bth)
{
sexord=1; sexi=s;
sexpt=ptt(pt); sexsl=ptt(sl); sexbrs=bth;
};
Вот я тоже не телепат. Смотрим объявление, например: char sexi; // standard exit id
Вот ведь, блин, а я уж было подумал... Оказывается sexi и отношения к сексу не имеет, разве что церебральному.
8. Вернёмся к классу. Убедившись, что править что-то в этом коде сродни подвигам Геракла, вместе взятым есессно, решил воспользоваться одним из базовых столпов ООП - полиморфизмом. Унаследовал класс, написал свою реализацию нужных мне методов, а вот не переопределенные методы вдруг перестали работать. Удивительно? А мне нет. Те члены класса, которыми они пользуются были объявлены в приватной секции, а совсем не protected.
9. Переопределение оператора new/delete -- руки отрывать.
10. Функции принимающие 10 (да-да, 10) параметров.
11. Часто на работе сталкиваюсь с такими комментариями одного товарища:
1. // Пока не конец.
2. // В массив.
3. // Составляем запрос.
4. // Всё...