Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

вторник, 6 января 2015 г.

Что лучше "найти все баги" или "найти как можно больше багов"

Меня только что спросили, а у меня код безбажный вообще? Не, я эту иллюзию оставил еще когда увлекся ТДД. Код бажный всегда.

Вопрос в теме конечно филосовский и с подвохом. Я его вспомнил, когда мы с коллегой по тренингу зацепили вопрос в скайпе "код кажется не очень классным, но я вот не знаю что с ним делать..."

Вот стенограмма (конечно же с позволения собеседника):

Один Хороший Программист: Получается лажа(
СанЁк Баглай: так всегда
СанЁк Баглай: потом найдешь как сделать то же другим способом, потом еще одним
СанЁк Баглай: когда будешь уметь сделать это 3мя разными, условно - ты миддл, когда 10ю - сеньйор
СанЁк Баглай: просто экспериментируй
СанЁк Баглай: код это любит
СанЁк Баглай: кстати да, этот вопрос до тебя уже решали
СанЁк Баглай: 1000 других ребят, сидели так же и мучились точно над такой же ситуацией
СанЁк Баглай: может быть кто-то уже описал решение в своем блоге?
СанЁк Баглай: может быть разрабочики фреймворка как-то это продумали в свой версии 1.7 ?
СанЁк Баглай: а че имено не нравится-то? в чем "лажа"?
СанЁк Баглай: код работает, первый этап "make it work" позади
СанЁк Баглай: теперь "make it better"
СанЁк Баглай: сделать код красивше
СанЁк Баглай: так ведь?
Один Хороший Программист: да
Один Хороший Программист: У тебя код работает без изьянов?)
СанЁк Баглай: ты что?! :)
СанЁк Баглай: бажит по черной
СанЁк Баглай: я как ТДД стал использовать потерял то вот чувство, что код может быть безбажный
СанЁк Баглай: никогда_&_ниукого
СанЁк Баглай: всегда есть баги
СанЁк Баглай: недавно на GoQA Спрашивали один филосовский вопрос
СанЁк Баглай: что лучше "найти все баги" или "найти как можно больше багов" ?
СанЁк Баглай: а?
Один Хороший Программист: Найти все баги)
СанЁк Баглай: обоснуй
Один Хороший Программист: Любой баг может привести к непредсказуемым последствиям, так что нужно искать все баги, что бы снизить риск. Ну и если браться за дело так на уж на все 100%
СанЁк Баглай: а как ты будешь знать что 100% наступили?
СанЁк Баглай: вот уже 100% или еще одну багу поймаю и будет 100%? или через час будет 100% ?
СанЁк Баглай: кто скажет "чувак! все 100% можно идти домой! хух!" а?
СанЁк Баглай: а если по дороге домой придумаешь еще один кейс, где точно должна быть бага, или под утро прийдет в голову идея в душе?
СанЁк Баглай: 100% превратятся во сколько, в 99% или 80% ?
Один Хороший Программист: Тогда баг - это не совсем ошибка, а то как можно было бы исправить систему в лучшую сторону?!Получается все баги не отыскать
СанЁк Баглай: все не отыскать
СанЁк Баглай: но к этому стоит стремиться
СанЁк Баглай: стремиться легче, когда ты знешь что еще валом работы
СанЁк Баглай: и тебе предстоит еще найти "ка кможно больше багов"
СанЁк Баглай: а не когда ты решил себе, что все, я сегодня 100% с мыслю "я нашел все баги"
СанЁк Баглай: так же и с кодом, вернее его эстетичностью
СанЁк Баглай: нет предела совершенству
СанЁк Баглай: только ты решаешь когда закончить его улучшать
СанЁк Баглай: когда у тебя 100%
СанЁк Баглай: но тут не так как с багами
СанЁк Баглай: баги - критично
СанЁк Баглай: красивый код - не так сильно
СанЁк Баглай: да его будут потом фукать, и скорее всего в любом случае
СанЁк Баглай: скорее всего длительный проект (длящийся годами) будет легаси и ничего ты с этим не поделаешь
СанЁк Баглай: но что ты можешь сделать - так это стать сеньйором быстрее
СанЁк Баглай: потому что будешь знать как решать то же 10ю разными способами
СанЁк Баглай: а все потому что ты немного поигрался с кодом в игру - сделай его няшнее
СанЁк Баглай: сегодня чуть, завтра чуть, после завтра чуть
СанЁк Баглай: он уже работает, а ты хочешь сделать его красивше
СанЁк Баглай: зная, что идеал недостижим
СанЁк Баглай: но хоть чуточку
СанЁк Баглай: и не слишком долго :) чтобы сроки не профакапить
СанЁк Баглай: по другим таскам
СанЁк Баглай: потому ищи варианты
СанЁк Баглай: не имею права подсказывать
СанЁк Баглай: да и не знаю я если честно сразу ответ - надо включать моцк и думать самому как сделать лучше
СанЁк Баглай: есть инструмент который может помочь
СанЁк Баглай: метафора системы называется
СанЁк Баглай: загугли определение
СанЁк Баглай: из XP ростут ноги
СанЁк Баглай: суть в том, что для любой системы ты находишь аналог в реальном мире
СанЁк Баглай: такое возможно, потому как ООП моделирует реальный мир, и ты там ничего такого не придумаешь, чего бы небыло уже в реальном мире
СанЁк Баглай: просто надо найти, что вот этих пару классов и методов напоминают из реального мира
СанЁк Баглай: может таксист и диспетчер со службой такси
СанЁк Баглай: может дворник с метлой мусором и жеком
СанЁк Баглай: может карбюратор под капотом машины
СанЁк Баглай: может спутник, что вокруг орбиты летает и ретрнслирует инфу
СанЁк Баглай: ХЗ, чо бы ни придумал
СанЁк Баглай: это потом поможет понять как должна развиваться система
СанЁк Баглай: это легче объяснить напарнику, чем вот смотри у меня тут хелпер, а тут баттон, а тут мессаджи в кью...
СанЁк Баглай: и самое главное это включает моцк
СанЁк Баглай: мы мыслим образами, а не кодом
СанЁк Баглай: и даже не словами
СанЁк Баглай: а яркими образами, кодирующими наш опыт
СанЁк Баглай: так что метафоры самое оно
Один Хороший Программист: Ок, спасибо.
СанЁк Баглай: так тебе спасибо
СанЁк Баглай: какой хороший пост в блоге получится :)
СанЁк Баглай: занесло меня чуть, это фрирайтинг, не я
Один Хороший Программист: Кинь потом ссылку на пост)

Как-то так

А когда ты останавливаешься?
Как долго надо полировать свой код?
И еще, нравится ли тебе такой формат постов?

ПриЁм

2 комментария:

  1. Привет! )
    Насчёт когда останавливаюсь: когда работает как запланировано, ибо пока TDD и рефакторингом не занимался - просто любитель ))
    К правильным критериям полировки кода можно отнести необходимость отработки всех возникающих исключений в ходе работы программы.
    Хотя в действительности 100% очень растяжимое понятие, согласен с тобой))
    Форматы постов: каждый хорош по своему ;)

    ОтветитьУдалить
    Ответы
    1. Спасибо Андрей за коммент.
      За исключения - супер! Новички часто пишут идеальную программу, а защиту от дурака не продумывают. А идеального мира не существует.
      Make it work -> Make it better -> Make it fast

      Удалить