Здравствуйте, Юрий Лазарев, Вы писали:
ЮЛ>Здравствуйте, alexb1980, Вы писали:
ЮЛ>Безусловно, надо (было) искать, но надо было и писать алгоритм. В сжатые сроки. Ну вот это ваше предложение, чем оно в принципе улучшило бы читаемость кода? Не говорю о трудоемкости написания этого множественного наследования, которое потом придется и переписывать в другой какой нибудь вид. ЮЛ>Чем оно было бы лучше цельного алгоритма, в котором все отношения под рукой, никакой фрагментации кода? ЮЛ>Я всегда за хорошую идею, но против фрагментации. В данном случае идея фрагментацию не перевешивает.
Тут возможно вы не правы, вот например в C# есть например sealed classes. Вот и в C++ можно что-то такое изобрести (это точно можно сделать).
Ну тогда нужно оптимизировать алгоритм, если вас не устраеват фрагментация. Тут я пока ничего предложить немогу, потомучто это трудоёмко.
Здравствуйте, alexb1980, Вы писали:
A>Ну тогда нужно оптимизировать алгоритм, если вас не устраеват фрагментация. Тут я пока ничего предложить немогу, потомучто это трудоёмко.
Именно что трудоемко. Так можете вы прямо сказать, чем так неугодна программа с цельным алгоритмом и что исключения на длину кода все же возможны? Или превышения числа строк должны караться увольнением?
Здравствуйте, Юрий Лазарев, Вы писали:
ЮЛ>Здравствуйте, alexb1980, Вы писали:
A>>Ну тогда нужно оптимизировать алгоритм, если вас не устраеват фрагментация. Тут я пока ничего предложить немогу, потомучто это трудоёмко.
ЮЛ>Именно что трудоемко. Так можете вы прямо сказать, чем так неугодна программа с цельным алгоритмом и что исключения на длину кода все же возможны? Или превышения числа строк должны караться увольнением?
Я сам несколько раз попадал под "горячую" руку (довольны менеджеры — недовольны заказчики, не довольны менеджеры — довольны заказчики, все довольны — разработчик не доволен), скорее это просто предлог для очередного сокращения...
Здравствуйте, alexb1980, Вы писали:
ЮЛ>>Именно что трудоемко. Так можете вы прямо сказать, чем так неугодна программа с цельным алгоритмом и что исключения на длину кода все же возможны? Или превышения числа строк должны караться увольнением?
A>Я сам несколько раз попадал под "горячую" руку (довольны менеджеры — недовольны заказчики, не довольны менеджеры — довольны заказчики, все довольны — разработчик не доволен), скорее это просто предлог для очередного сокращения...
Скорее всего. Начальник с сокращениями не церемонится. При мне за год сократил двоих. Просто так — работу сделали, больше не нужны. На самом деле не нужны менеджеры — посредники, общение исполнителя с заказчиком напрямую много эффективнее.
Так как с принципиальным вопросом — возможна ли ситуация, когда природа алгоритма требует длинного кода? Или надо непременно убивать время на (далеко не всегда оправданный) поиск улучшения, свертки кода?
Здравствуйте, Юрий Лазарев, Вы писали:
ЮЛ>Так как с принципиальным вопросом — возможна ли ситуация, когда природа алгоритма требует длинного кода? Или надо непременно убивать время на (далеко не всегда оправданный) поиск улучшения, свертки кода?
Хороший разработчик благодаря тому, что сразу не допускает длинного кода — не убивает время, а наоборот его экономит. Лично я конечно в лоб говнокод напишу да, быстрее. Процентов так на 10. Но на отладку говнокода я потрачу в 10 раз больше времени, чем если я потружусь, и не буду допускать спагетти. Да, я в курсе, что очень многие называющие себя программистами настолько стали круты в написании говнокода, что в состоянии терять на отладку спагетти кода не в 10 раз больше времени, а в 2 раза больше времени. Вот только нахрена этот навык развивать? Когда если выработать привычку сразу писать максимально нормально, то прирост производительности работы будет гораздо больше. Да, я в курсе, что таким навыком мало кто обладает. Да, я в курсе, что в российских институтах нормально писать не учат. Да, я в курсе, что очень тяжело попасть на проект с нормальным кодом, где можно этому учиться. Я в курсе, что даже чтение Макконела не выработает эту привычку. И я в курсе что это очень тяжело, этому можно учиться всю жизнь, и все равно не достигнешь совершенства.
Но также я в курсе, что умение сразу писать код дает больший прирост производительности труда, чем любые знания деталей реализации множественного наследования, умение разворачивать списки на бумажке, умение компилировать код в уме и заучивание деталей реализации всяких I = I++ + ++I. А раз это дает повышение производительности труда — именно это и следует в первую очередь совершенствовать, причем совершенствовать постоянно. Да, умение писать код нормально никак не поможет пройти 95 процентов собеседований, а зачастую будет наоборот зачтено в минус. Вот только это поможет потом в реальной работе, в умении всегда без проблем выдерживать сроки, или хотя бы выдавать хоть что то приемлемое в сроки.
Здравствуйте, elmal, Вы писали:
E>Хороший разработчик благодаря тому, что сразу не допускает длинного кода ...
Совершенно с вами согласен, так вот и я не пишу длинного кода. Почти никогда. Но это не избавляет от случаев, когда такое приходится писать. О том и был вопрос —
Так как с принципиальным вопросом — возможна ли ситуация, когда природа алгоритма требует длинного кода? Или надо непременно убивать время на (далеко не всегда оправданный) поиск улучшения, свертки кода?
Значит ли то, что ваш хороший разработчик "сразу не допускает длинного кода" то, что он его вообще не пишет? Никакого. И в чем тогда выражается экономия?
Здравствуйте, Юрий Лазарев, Вы писали:
ЮЛ>Так как с принципиальным вопросом — возможна ли ситуация, когда природа алгоритма требует длинного кода? Или надо непременно убивать время на (далеко не всегда оправданный) поиск улучшения, свертки кода?
Я не алгоритмист. Но я не знаю ситуаций, когда природа алгоритма требует длинного кода. Когда был студентом, я считал, что таких алгоритмов, которые требуют длинного кода — до хрена и больше. С опытом я уже не очень могу представить таких ситуаций.
ЮЛ>Значит ли то, что ваш хороший разработчик "сразу не допускает длинного кода" то, что он его вообще не пишет? Никакого. И в чем тогда выражается экономия?
Хороший разработчик не пишет длинный код. Он автоматом его разбивает в тот момент, когда он начинает казаться длинным. Просто на рефлексах это делает, не задумываясь и практически не тратя времени.
Здравствуйте, elmal, Вы писали:
E>Я не алгоритмист. Но я не знаю ситуаций, когда природа алгоритма требует длинного кода. Когда был студентом, я считал, что таких алгоритмов, которые требуют длинного кода — до хрена и больше. С опытом я уже не очень могу представить таких ситуаций.
Ну вот вам такой алгоритм. Не понял, с каким таким опытом, если вы не алгоритмист?
E>Хороший разработчик не пишет длинный код. Он автоматом его разбивает в тот момент, когда он начинает казаться длинным. Просто на рефлексах это делает, не задумываясь и практически не тратя времени.
Надеюсь не автоматом Калашникова? Просто на рефлексах... — обезьяна какая то вырисовывается.
Я так понимаю, вы говорите о кодах уже заранее отрепетированных в голове. Здесь алгоритм писался с нуля и до последнего момента был не определен окончательно.
ЮЛ>Надеюсь не автоматом Калашникова? Просто на рефлексах... — обезьяна какая то вырисовывается.
Хамство какое-то вырисовывается.
ЮЛ>Я так понимаю, вы говорите о кодах уже заранее отрепетированных в голове. Здесь алгоритм писался с нуля и до последнего момента был не определен окончательно.
Алгоритмист-Юрий, вы можете сказать, например, какая сложность у вашего алгоритма?
Нормальный подход в данном случае:
1. спецификация или статья, описывающая алгоритм, чтобы другие люди могли ее прочитать и покритиковать
2. (опционально) эскизный проект на питоне или чем-нибудь подобном (хотя иногда это невозможно и приходится использовать C++ для эскизного проекта из за специфики задачи), чтобы можно было отладить алгоритм (внести изменения в спеку, если нужно)
3. реализация алгоритма (не в классе CSewingDlg а отдельно), чтобы можно было потестить, например подготовить набор верифицируемых кейсов в текстовом файле и прогнать тест на нем
4. заюзать полученый код в реальном приложении
Так выглядит работа нормального алгоритмиста/ресерчера в IT компании, JFYI.
Получается быстрее (так как задачи решаются по отдельности, сначала дизайн алгоритма, потом кодинг) и качественней (покрытие тестами, естественным образом получается отдельная сущьность в коде, отвечающая за алгоритм).
Здравствуйте, GhostCoders, Вы писали:
GC>Данный код был написан моим сотрудником. Мне этот код не нравится, но он мне отвечает что я субъективен и его код неплох.
Скажите плз, на какую зарплату был взят сотрудник? Москва?
Т.е. для 40 тыс. в месяц наверно неплох, для 80 уже плох.
Здравствуйте, antonio_banderas, Вы писали:
_>Здравствуйте, GhostCoders, Вы писали:
GC>>Данный код был написан моим сотрудником. Мне этот код не нравится, но он мне отвечает что я субъективен и его код неплох.
_>Скажите плз, на какую зарплату был взят сотрудник? Москва? _>Т.е. для 40 тыс. в месяц наверно неплох, для 80 уже плох.
Я думаю, ТС вам не ответит. Это провинция, делите все на 2. Последние месяцы жаба душила манагера платить и 10 тыс., но выхода не было — других мест не найти.
Тут еще момент. Дело в том, что в середине лета я сломал ногу, вынужден был потерять месяц и, само собой, за свой счет. Полностью потратив на аренду все свои сбережения, по выходе на работу я вскоре был осчастливлен новостью о моем скором сокращении. При том что заказчик был извещен о задержке с разработкой и согласен был ждать, ждать не изволил манагер. Он несколько раз разрывал договор с заказчиком, несмотря на то, что первый этап я вопреки всему успешно завершил; он меня уволил (забавные подробности есть в др.ветке), и второй этап, также пройденный без замечаний, я выполнил с заказчиком уже после увольнения, в прямом с ним общении — сейчас как раз неделя тестов у заказчика.
Здравствуйте, Юрий Лазарев, Вы писали:
ЮЛ>Я думаю, ТС вам не ответит. Это провинция, делите все на 2. Последние месяцы жаба душила манагера платить и 10 тыс., но выхода не было — других мест не найти.
Ты не преувеличиваешь? У нас кассир в супере получает рублей 12 минимум. Город 150 тыс примерно
ЮЛ>Тут еще момент. Дело в том, что в середине лета я сломал ногу, вынужден был потерять месяц и, само собой, за свой счет.
Почему не по больничному?
Здравствуйте, Юрий Лазарев, Вы писали:
ЮЛ>Я думаю, ТС вам не ответит. Это провинция, делите все на 2. Последние месяцы жаба душила манагера платить и 10 тыс., но выхода не было — других мест не найти.
Ууу, если провинция, то понятно. Полное отсутствие даже начальной культуры разработки сплошняком, учиться не у кого зачастую, только по книжкам. С увольнением могу поздравить, как раз хороший случай что то поменять в жизни. Рекомендую валить в Москву на юниорскую позицию если возраст позволяет, года через полтора код будешь писать приемлемый. Да, придется на дошираке посидеть, возможно снимать комнату и тому подобное. Но затем, как будет опыт, уже по провинциальным меркам будешь мегакрут, так что можешь попробовать вернуться (я правда вернувшихся не знаю, Москва это такое место, откуда не возвращаются, либо там остаются — либо в буржундию валят), либо уже на съем однушки хватать будет, и будут перспективы роста, если напрячься и оставить провинциальный уровень потребления, то можно и квартиру купить. В любом случае — через полтора года поймешь что был не прав относительно своего текущего кода, материться на текущий код будешь еще круче, чем здесь матерятся, научишься писать его быстрее, и в то же время понятнее.
Здравствуйте, Юрий Лазарев, Вы писали:
GC>>>Данный код был написан моим сотрудником. Мне этот код не нравится, но он мне отвечает что я субъективен и его код неплох.
_>>Скажите плз, на какую зарплату был взят сотрудник? Москва?
ЮЛ><skipped> Последние месяцы жаба душила манагера платить и 10 тыс., но <skipped>
Несмотря на всю свою говёность, имхо, для цены 10 тыс. рублей в месяц — код неплох.
Не силён в плюсах.
Подскажи, пожалуйста, есть ли в приведенном коде паттерны?
На мой взгляд, вышеприведенный код замусорен комментариями и сбит в один файл. Мне думается, чтобы код был бы читабельнее, если код можно было бы разнести по разным файликам, обрамить его в регионы, вынести в какие-нибудь header (или как там у вас в С++)?
Также я не увидел ни одного try...catch... finally, что очень и очень ужасно.
Здравствуйте, wety, Вы писали:
W>Здравствуйте, Кодт, Вы писали:
W>Не силён в плюсах. W>Подскажи, пожалуйста, есть ли в приведенном коде паттерны?
Там и паттерны, и маттерны. Маттернов больше
W>На мой взгляд, вышеприведенный код замусорен комментариями и сбит в один файл. Мне думается, чтобы код был бы читабельнее, если код можно было бы разнести по разным файликам, обрамить его в регионы, вынести в какие-нибудь header (или как там у вас в С++)?
Хотя бы разбить на много функций.
W>Также я не увидел ни одного try...catch... finally, что очень и очень ужасно.
Это, как раз, не ужасно.
Во-первых, RAII избавляет от большинства finally. Это же С++.
Во-вторых, штатное исключение там — это исчерпание памяти. Но эта ситуация сама по себе настолько кровава, что нет существенной разницы между просто завершением программы и её вылетом с треском по terminate.
А все остальные исключительные ситуации — нештатные (например, отсутствие контрола с нужным идентификатором, или нулевой указатель из ком-объекта), и должны, максимум, покрываться ассертами и/или тестами.
Только если не стоит задача сделать программу устойчивой ко внутренним сбоям.
Здравствуйте, GhostCoders, Вы писали:
GC>Данный код был написан моим сотрудником. Мне этот код не нравится, но он мне отвечает что я субъективен и его код неплох. GC>...
Доказывать бесполезно, введите code review. 2 месяца и свой код от чужого перестанете отличать. Испытано на себе.