Comments 46
Мило. Зачитался. Но как-то такое я был бы рад видеть на IT happens, а не тут.
+16
Как-то я даже и не знал про IT Happens. Спасибо, в следующий раз напишу туда.
+4
Мне кажется, что вечером в субботу пойдет и сюда.
А вообще, было бы интересно добавить особое поведение компилятору, чтобы он ругался на быдлокод.
А вообще, было бы интересно добавить особое поведение компилятору, чтобы он ругался на быдлокод.
MyClass.cpp:354:5: error: What the fuck? Why method count() contains 9 variables with one letter names?
+27
pmd, checkstyle, sonar этим и занимаются.
+3
Насколько я понимаю, эти решения исключительно под Java?
0
Нет, в sonar'е куча плагинов для разных языков
+1
Удивительно, но про сонар на русском не нашел практически ничего. Даже удивился, встретив этот комментарий.
Но опять же не совсем корректно его упоминание. Sonar только собирает данные от конкретных инструментов, которые можно использовать и без него.
Но опять же не совсем корректно его упоминание. Sonar только собирает данные от конкретных инструментов, которые можно использовать и без него.
0
Вы не одиноки. Я практически ничего не нашел и на английском, а что нашел, относилось только к Java, поэтому и задал вопрос.
0
Сонар может быть своеобразным «агрегатором» выхлопа из pmd, checkstyle, e.t.c. Помимо них, к Сонару можно прикручивать его же плагины. Сонар активно используется здесь: www.cloudbees.com/platform-service-sonarsource.cb
Сам я про сонар узнал из рассылки вышеупомянутоого сервиса.
Сам я про сонар узнал из рассылки вышеупомянутоого сервиса.
0
Я вас ненавижу за упоминание sonar.
Через 3 часа вставать на работу, еле настроил всю кухню для проверки php кода в sonar, проверил пару опенсорцных библиотек и сильно опечалился результатом :(
Через 3 часа вставать на работу, еле настроил всю кухню для проверки php кода в sonar, проверил пару опенсорцных библиотек и сильно опечалился результатом :(
+1
Боюсь, что если бы Вася писал программу, которую было бы удобно компилировать, Андрею она бы тоже не очень понравилась. Такая программа была бы чересчур привязана к конкретным типам данных, конкретной архитектуре железа и т.п. Действительно, зачем здесь писать виртуальные функции, если мы знаем, что реализация интерфейса сегодня только одна? Ведь компилятору придётся отрабатывать наследование классов, проверять его корректность, генерировать код для каждого вызова (возможно, с кучей проверок)… Нет уж, оставим пока невиртуальный метод — с кодом будет разбираться проще. А то, что его труднее будет развивать и переносить, то это проблемы не компилятора, а программистов…
+19
Сюжет про компилирование, а мораль и все примеры про читаемость кода. Разные вещи, вообще-то.
+23
Функционально программирование VS Объектно-Ориентированное программирование.
Программирование «на один раз» VS LTS-программирование
Самокомментирующийся код VS Полезные комментарии
+23
Я думаю, в рассказе было Процедурное программирование VS Объектно-ориентрованное. И по поводу самокомментирующегося кода с названиями переменных из трех букв (хе-хе), тут что-то не вяжется.
+2
На все эти темы у меня сформировалось одно мнение. Звучит так: во всём нужно искать «золотую середину». Нельзя впадать в крайность, становиться только на одну сторону. Для каждого конкретного случая использовать наиболее подходящую парадигму (функциональную, ОО или др.). В этом плане мне нравится C# с его гибридными возможностями, да и многие современные языки позволяют программировать в разных стилях. Код комментировать только при необходимости, если нужна документация — использовать комментарии для её последующего автоматического создания.
Стоит заметить, что такого рода «спец. олимпиады» чаще всего несут в себе может и небольшую, но положительную, ценность.
Стоит заметить, что такого рода «спец. олимпиады» чаще всего несут в себе может и небольшую, но положительную, ценность.
+1
Здорово. Правда, низкое качество кода не обязательно свзязано с какими-то дополнительными напрягами для компиляторов. Да и оптимизация, так скажем, вовсе не обязательно улучшает читабельность кода. Хотя, с другой стороны, когда-то давно я столкнулся с одной довольно занятной ситуацией. Товарищ в институте написал некислую расчётную программу, которая думала примерно полтора часа (на пне-120). Пока она считалась, он обычно ходил обедать в столовую. Штука была написана под линух, и, как-то взглянув на это творчество, я его спросил — а ты не хочешь добавить -O2 к CFLAGS в Makefile? Ну, добавил… Время работы упало с полутора часов до считанных секунд. Вот так вот испортил человеку обеденный перерыв, а всего-то дело было в том, что в программе было с десяток уровней вложенности циклов, и на самом внутреннем считался набор значений, который можно было бы посчитать заранее, о чём gcc в режиме оптимизации без труда догадался.
А из программерских баек меня больше всего за душу берёт сказка про программиста и эльфов.
А из программерских баек меня больше всего за душу берёт сказка про программиста и эльфов.
+7
Мне вот интересно, почему Андрей просто не развернулся, и не ушел(ну, в более вежливой форме, конечно)? Зачем было так стараться, переучивать Васю? Нравится ему говнокод писать? Нравится его директору такой результат, — ну так и дай Б-г. Пусть работают, раз всех все устраивает. Странная история, в общем.
+4
А я был в роли Васи, когда занимался реверс-инжинирингом обфусцированного кода на smali. Целую стопку бумаги изрисовал диаграммами последовательностей вызовов. В конце-концов нашёл весьма элегантное решение, только оценить его некому.
+2
только оценить его некомуОшибаетесь :)
Занимался в почти тем же самым (декомпиляцией кода приложения на Андроиде). Тоже рисовал схемы логических веток и поиска способа записать ветвистое дерево вызовов в линейный код :)
0
Я вот что сделал. Написал простой скрипт, который 1) в начале каждого метода smali добавляет вызов статичного метода нашего класса, в духе MyClass.doN(), где N от 0 до количества методов ко всех классах 2) генерит названный класс со всем статичными методами, каждый метод пишет в лог число N. Замет я это снова собрал, подписал и залил на девайс. Итого — лог посыпалась куча чисел, означающих последовательность вызова. Найти нужный кусок в коде уже не представлялось проблемой.
0
Не хватает женщины в сюжете. Видимо, забыли. Дело было так. Андрей пришел в офис и увидел прекрасную секретаршу Наташу. Влюбился. Сначала хотел уходить из конторы, но потом передумал и решил переучить Василия, раз уж работать вместе придется. Василий был уже тайно влюблен в секретаршу Наташу, но она не отвечала ему взаимностью. Наташа любила шефа, но он тоже не отвечал ей взаимностью. Вот такая Санта-Барбара. В итоге Андрей и шеф подрались на дуэли. Андрей смертельно ранил шефа. Шеф умер. Андрей занял место директора и фирма переквалифицировалась в аутсорсинговую компанию. А Наташа вышла замуж за Андрея и родила ему троих детей.
+6
Замечательно. Единственное но, компилятору абсолютно все равно какой код компилировать :) это нам какое-то подобие структуры подавай, да еще и с комментариями и документацией, а компилятору до фени. Но написано увлекательно, хотя и не понятно что именно Андрей пытался сделать с Васей, в смысле горбатого могила исправит.
+7
Андрей покарает тебя быдлокодер!
+1
Я вот что не понял. Если «Вася… работал в конторе уже третий год. Программист по образованию, он был на хорошем счету у директора Александра Ивановича, тот нисколько не сомневался в его профессиональных навыках и готов был доверить ему любую важную задачу.» — то в чем проблема-то?
Какая разница как форматирует код Вася и какие паттерны он применяет/не применяет, если все довольны?
Андрей с двумя годами после универа, которого через 7 месяцев работы попёрли из Яндекса — это гуру программирования чтоль?
Какая разница как форматирует код Вася и какие паттерны он применяет/не применяет, если все довольны?
Андрей с двумя годами после универа, которого через 7 месяцев работы попёрли из Яндекса — это гуру программирования чтоль?
+3
Читайте дальше, «Когда дверь за директором захлопнулась, Вася указал новенькому на компьютер и подкинул ему парочку «простеньких задач», над которыми, если честно, трудился уже не один месяц.» Вася не умел (не хотел) нормально программировать и постоянно нуждался в помощниках. Хорошее отношение директора позволяло Васе спихивать все его недостатки на этих вот помощников.
+1
Не совсем верная аналогия, компиляторам как раз все равно что компилировать, лишь бы оно не нарушало формальных правил. Например, браузер легко разбирает даже сильно обфусцированный JS.
+3
Существует очень распространенная ошибка в анализе работы систем (которая нам косвенно навязывается) этим рассказом. Это «одушевление неодушевленного».
Изначально компьютер как раз и является исполнителем, который:
1) не устает
2) не ошибается (если ему поданы корректные исходные данные и правильные инструкции по их обработке).
Т.е. компьютеру как раз неважно, рутина это или не рутина, интересно заниматься этим процессом, или нет.
А этот рассказик пытается нам пропихнуть в подсознание мысль, что «некрасивый исходный код компьютеру _трудно_ компилировать».
Изначально компьютер как раз и является исполнителем, который:
1) не устает
2) не ошибается (если ему поданы корректные исходные данные и правильные инструкции по их обработке).
Т.е. компьютеру как раз неважно, рутина это или не рутина, интересно заниматься этим процессом, или нет.
А этот рассказик пытается нам пропихнуть в подсознание мысль, что «некрасивый исходный код компьютеру _трудно_ компилировать».
+3
а я понял что это был не компьютер, а андрюха всё это ему под гипнозом пояснял.
и поэтому некрасивый исходный код по мнению андрюхи надо было переделать, а причина для этого самая логичная для данной ситуации — что бы компилировалось нормально (косвенная отсылка к читаемости кода)
и поэтому некрасивый исходный код по мнению андрюхи надо было переделать, а причина для этого самая логичная для данной ситуации — что бы компилировалось нормально (косвенная отсылка к читаемости кода)
+1
Взглянув на название, ожидал увидеть какой-нибудь дельный совет по рефакторингу, или хотя бы пониманию такого вот некрасивого кода. А вместо этого увидел какую-то сказочку про белого бычка.
+2
UFO just landed and posted this here
Избиение розгами в целях стимулирования мозговой деятельности. Очень интересный подход к увеличению продуктивности.
0
Погодите, так Вася же матросом был!
+1
Sign up to leave a comment.
Вася в роли компилятора