|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.09.2017, 09:42 | #11 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
На восстановление кода с нуля всего неделя???
Чет мне кажется что на разбор декомпилированного кода уйдет куда больше времени.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
15.09.2017, 10:40 | #12 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
особенно если проект не такой давний. я такие проекты даже в IL патчил(ildasm/ilasm) из-за того что сырцы потерял Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
15.09.2017, 15:49 | #13 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Вот этого вот вообще не понял ... Я ставлю метку, и пишу на неё goto. Что значит "неизвестно куда прыгнет" ? Известно же. Этож не ассемблер. Хотя и в нём есть как именные метки, так и прыжок
В этом я и вижу преимущество. Когда очень много вложенных вложений - становится всё труднее поддерживать читабельность, в самом простом случае - вставка табуляции. Да, она есть в режиме "выделил текст + нажал tab", но когда таких выделений+нажатий много - это начинает раздражать. Тут ещё есть другая проблема - что для кого является "читабельным" ... Для меня например куда более удобно оставлять пустые ветки else, как раз таки для собственного удобства чтения кода. А как же руки и мозги из правильного места ? =) Пожалуй, самая лучшая защита от ошибки. Я участвовал в двух мало-мальски крупных проектах (45 000 и 80 000 строк кода). Мне давали реализовывать 15 классов, и дали на это дело два месяца. Я сделал почти за месяц, принёс, на меня посмотрели, решили проверить ... Начали матюкаться на goto (реализация на 2 000 сток кода); я тут же вытащил вторую реализацию, которая полностью без goto (5 000 строк кода). Благо платили хорошо, и времени было предостаточно. Забрали те, что были с goto - "потому что читать гораздо легче, и работает визуально быстрее". Там чуть ли не в половине функций классов использовались goto - где то выход из циклов, где то перепрыгивание в конец, где то просто из разряда "наименьшее из бед" - реализация с goto в 35 строк кода, без goto растянулась на 120. Два часа потратил. Проблема не в том, что бы восстановить 1 000 строк кода (это можно сделать и за один день). Проблема в том, что правила обработки прайсов были как раз таки в утерянном коде. Так как прайсы нужно обновлять - перед каждым "вновь" добавляемым правилом нужно вспомнить, и написать эти правила, и писать код. Не все прайсы обновляются каждый день (из тех, которые нуждаются в программной обработке). Все прайсы обновляются как минимум раз в неделю - вот и получается, что на восстановление проектика ушла бы рабочая неделя.
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 15.09.2017 в 15:55. |
15.09.2017, 22:10 | #14 | |||||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
вы твердо можете сказать где находится в коде цель goto? сейчас, через месяц, через год?(или у вас проекты из разряда релиз и забыл, или передал код, потом не мои проблемы?) Цитата:
Цитата:
если не забивать на оформление кода, то читаемость на высоте, все начала case на одном уровне, инструкции внутри, на большем уровне. или у вас экран 800*600? Цитата:
про команду уж молчу. Цитата:
если у вас разница между goto и не goto идет 2-3 раза, это "мастерство". сколько лет программирую ни разу ни видел такого кода. впрочем пример с 5к кода отлично это показывает, это надо постараться, что с goto было более читабельно и поддерживаемо. самый край применения goto, который вы упомянули, это выход из вложенных циклов. перепрыгивания в конец это надуманная проблема, и по мне, более похожа на недостаток знаний или нежелания рефакторинга, нежели нечто реальное. конечный goto так же запросто можете принести еще больше goto ради хвостовой метки... в общем как я вам уже упоминал, ваш код и ваше дело. но вам уже много кто говорил и объяснял(я скорее держу разговор дольше всего). вам может стоит задуматься? посмотреть на чужие практики, посмотреть чужой код. удачи Вам, боюсь говорить больше не о чем. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|||||
16.09.2017, 02:05 | #15 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
Может не в тему но ... тут рядом ветка по поводу "стоит ли получать диплом программиста или лучше самоучка". вот в данном случае результат налицо.
Я вот хоть убей не понимаю как можно определять качество кода в количестве строк. Ну я могу и "Hello world" расписать на 5000 строк ... ну это ладно. От конструкции goto отказались ведь не просто потому что захотелось. Это относится к фундаментальному развитию технологии разработки программного обеспечения. Представьте себе отладку большого проекта.. вас эти goto будут кидать по разным частям кода. И каким образом вы будете отслеживать логику процесса? И ладно когда вы один разработчик .. но когда вас команда .. вас камнями закидают за подобное поведение. Ну и в довершение темы неплохо почитать статейку.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
16.09.2017, 02:32 | #16 | |||
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Прилепил затем, что "неизвестно" только в том случае, когда выполняется адресный переход вниз после модификации кода ассемблера ...
Цитата:
"Любой твой код, в который ты не заглядывал больше шести месяцев, будет выглядеть как код, который написал кто-то другой.". Цитата:
Я не могу похвастаться своим пятилетним опытом и двухлетним стажем, но всё же - за это время я как то пришёл к таким практикам, и вроде как всё нормально ... Ещё лет через 5-10 может что то добавится/изменится. Мне кстати очень нравилось на Pascal/Delphi вот что: можно было выполнить переход на метку, которая находится в какой нибудь соседней ветке кода, или ниже по уровню вложения. Я так запрыгивал в циклы, и перепрыгивал как то так - if () {goto metka;} else {metka:}. А то и вообще - в другие ветки на разных уровнях вложения ... Но, такой код уже действительно хрупкий - первое изменение чего либо - и всё сыпется. Цитата:
Я немного о другом - суть в том, что когда нужно что то переделать, то чем больше уровней вложения - тем дольше процесс переделывания. У меня такие необходимости возникают из-за того, что пришла какая то новая мысль/идея, как это лучше реализовать. А вообще да - иногда и в блокнотике не боюсь "руки пачкать". Мне один достаточно грамотный программист часто задаёт вопросы из разрядка "как сделать то, как сделать это". Я даю ему ответы за пару минут, но он их не принимает, видите ли - брезгует пользоваться переходами, ну или просто что то не нравится. Ну и ищет решения самостоятельно. Один раз чё то думал почти две недели, а потом забил. Это к слову о том, что он фапает на "гайдлайны от гугла". Не вы не подумайте, что я плохо отзываюсь о гугле - просто сам факт. Я уже как то писал о том, что гайдлайны - это ограничения, которые по большому счёту обоснованы лишь человеческим фактором. Но это лишь моё личное мнение, если вам это нужно - это ваше право. Ну почти ... Накодил за месяц, отдал на тестирование, пару месяцев поддержки - и всё всех устраивало. Потом только забыл. Может действительно мне не хватает опыта работы над одним проектом на протяжении больше полугода, да и ещё в команде. Но, это поправимо со временем, я думаю =). Я так и делаю, (с редкими вкрапливаниями goto), но о переделывании какого нибудь блока/функции я уже написал.
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 16.09.2017 в 02:45. |
|||
16.09.2017, 02:40 | #17 | |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Цитата:
Всегда считал и считаю - что чем более компактный код, тем лучше. В текущей теме речь не о постоянном применении goto где попало. А в определённых ситуациях, где это наиболее оптимально и удобно. Тема перешла в вопрос - "почему обсирают", косо смотрят, и люто-бешено ненавидят как goto, так и личностей его использующих. Что больше уже наталкивает на мысли о том, что "goto это плохо и никаких исключений". А вот с этого места по подробнее пожалуйста можно ?
Подпись ? Не, не слышал ...
|
|
16.09.2017, 09:15 | #18 | ||
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Цитата:
В моем вузе вроде никто ничего не рассказывал про goto ) Да и у автора вроде есть диплом. Цитата:
Где?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
||
16.09.2017, 22:06 | #19 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Есть же всё таки ситуации, когда пускай там эта функция будет 15 строк кода, вместо 25, и будет гораздо проще в плане восприятия ... Я видел кучу статей по этому поводу в гугле. Просто я руководствуюсь следующим умозаключением: всё можно, если осторожно; как говорится - с умом.
Ну может сейчас и не делают так уже (платить за строки кода), но раньше точно помню было такое, ещё мой препод (аспирант, хороший прогер) возмущался типа "какого хрена я за качественный компактный код получаю копейки, когда рядом сосед налил много воды, а толку ноль". В итоге тот препод уволился от туда с предлогом "не устраивают условия работы". В подробности не вдавался.
Подпись ? Не, не слышал ...
|
16.09.2017, 22:21 | #20 | |
Пользователь
Регистрация: 16.04.2017
Сообщений: 94
|
Цитата:
Рефлектор.Нет - говорят, самое то(но платная). |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Декомпилировать EXE файл (предположительно на C++) | Xezon | Помощь студентам | 5 | 11.08.2013 03:44 |
Вскрыть exe'шник | wm_leviathan | Операционные системы общие вопросы | 8 | 31.01.2011 17:11 |
Добавление нового ресурса в exe шник | MVX | Помощь студентам | 19 | 06.08.2010 11:19 |
Как 'засунуть' звуковой файл в EXE-шник.чтоб моя прога состояла всего из одного exe | betirsolt | Общие вопросы Delphi | 11 | 18.04.2010 21:58 |
18-ти килобайтовый EXE-шник... | Altera | Общие вопросы Delphi | 15 | 30.04.2008 06:33 |