Press "Enter" to skip to content

GOTO 2016 • Seven Secrets of Maintainable Codebases • Adam Tornhill


как часть моей дневной работы
Я проанализировал сотни разных кодов
основывает большинство из них с открытым исходным кодом, но также
много подготовительного и коммерческого кода
оснований, и сегодня я хочу поделиться некоторыми
мои наблюдения с вами, потому что там
некоторые модели, которые я вижу, повторяются
и снова, и эти шаблоны
независимо от языка программирования или
технологии, и я хочу сделать это в
по-другому , потому что я довольно
убеждены, что мы, как отрасль, знаем
какой хороший код выглядит так, как мы знаем о
важность проверки соответствия имен
сплоченность и все такое прочее
сегодня я хочу выйти за рамки этого
вместо этого я собираюсь начать с данных
анализ, потому что это не увлекательно
анализ данных стал основным
и рост машинного обучения
научил нас, как найти закономерности в
сложные феномены, но мы как разработчики
никогда не принимали эти методы и
поверните их на себя, чтобы понять наши
собственное поведение и то, как растут наши кодовые базы
так вот что я хочу делать сегодня, я хочу
показать вам, как поведенческие данные о нас
поскольку разработчики могут помочь нам сделать лучше
решения, которые
к поддерживаемым кодовым базам и
Хорошая новость в том , что вы все уже есть
все данные, которые вам нужны, мы просто
не привык думать об этом так, как я
говорить об управлении версиями
системы наши данные контроля версий являются
совершенный журнал поведения над нами как
разработчики взаимодействовали с нашим кодом
поэтому давайте раскроем секреты версии
контроль позже мое первое наблюдение
этот поддерживаемый код выходит за рамки
технологии, и мы, как разработчики,
чтобы быть очень хорошо на технической части
это, но мой опыт в том, что мы часто
пропустить социальные последствия наших
дизайны давайте посмотрим, что это важно
это то, что почти каждая система
что
работал в течение последних 10 лет
похоже, что у нас есть большой
подсистемы обычно бесплатны, мы как-то
интегрировать и обменять их
информации, и с одной стороны у нас есть большой
теперь каждая из этих
подсистемы могут быть достаточно большими, они могут
состоят из сотен тысяч или даже
миллионы кодов и масштабы этого
один делает это действительно очень трудно
причина, но это не просто
о масштабах, поскольку сегодняшние системы имеют тенденцию
для написания нескольких
языков программирования и, конечно же, они
разработаны несколькими программистами
организованный в несколько команд, и что
оставляет всех своим взглядом на
как выглядит система, никто не имеет
целостная картина, но на самом деле это не так
просто о технологиях, потому что системы
которые выглядят так, как правило,
организации, которая выглядит так,
главная задача состоит в том, чтобы сбалансировать это
технической и социальной организации
сложностей это на самом деле сложно
проблема, но это проблема, которую мы можем
упростить как — то понимания
следующий пункт здесь мое следующее наблюдение
что весь код равен, но некоторый код
больше, чем другие, и объяснять
я имею в виду, что хочу поделиться
маленькая история для вас это что-то
что случилось со мной несколько лет
назад в то время я работал над
большая база устаревших кодов и то, что мы сделали
был у нас прослушивают инструмент , который был в состоянии
измерить кучу разной сложности
меры и производят нечто , называемое
технической глубины, поэтому мы в основном
взял этот инструмент, бросил его на базу кода
и вышел список приоритетов каждого
модуль в системе, и каждый модуль имел
присвоенный ему технический номер глубины
Интересная вещь здесь заключалась в том, что
был явный кандидат номер один
был один фрагмент кода, который был способом
хуже, чем остальная часть, однако, когда
мы начинаем исследовать эту часть
код, оказалось, что этот код
были стабильными в течение трех лет, мы никогда не
нужно было прикоснуться к нему, это сработало замечательно
в производстве он просто сделал свою работу так
мы должны тратить время и силы
улучшая эту часть кода, что мы можем
ожидайте получить для меня это просто большой
риск, и, кроме того, мы, вероятно, все
гораздо более актуальные вопросы для участия в
и выяснить те вопросы, которые нам необходимы для
делать что-то по-другому, нам нужно
на эволюционном взгляде на наш код здесь
как это выглядит, пожалуйста, взгляните на
эти разные графики показывают все
то же самое на оси х у вас есть
каждый файл в системе и те файлы
сортируются в соответствии с их изменением
частота, которая составляет количество
мы сделали это влияние, которое
конкретный файл и количество
совершает это то , что вы видите на оси у
теперь интересно, что
то, что вы видите здесь, свободны радикально
разные кодовые базы, написанные на
совершенно другое программирование
языки и совершенно разные
но все они показывают одинаковые
образ вы видите распределение степенного права
и это то, что я видел в каждом
единственная база кода, в которой я проанализировал большинство
но для вас это означает, что в
ваша типичная система, большая часть вашей работы
имеет тенденцию находиться в относительно небольшой части
базы кода и большей части вашего кода
находится в длинном хвосте, что означает
редко когда-либо касались, и это
важно, потому что это дает нам инструмент для
приоритет сосредоточиться на коде, который
действительно имеет значение, так что теперь мы можем
сузить количество кода, который нам нужен
проверить, хотим ли мы сделать это реальным
улучшение, которое имеет значение с точки зрения
производительность, и это хороший старт
но нам нужно сделать еще лучше и
объяснить, как мне нужно немного
риск я собираюсь поставить слайд, и я
подумайте, что это точка в
презентации, где вы все
яростно не согласен со мной, но здесь мы
идти
когда дело доходит до поддерживаемых кодовых баз
сложность не проблема
мы, разработчики ,
презирать плохой код, мы узнали, что мы
нужно отражать плохой код, как мы видим
это, и мы узнали, что нам нужно
держите весь наш код чистым и приятным и
что это самый быстрый путь вперед
проблема у меня с этим, это просто не
true и график на предыдущей странице
указывает, почему это может быть так, но
все же мы не можем отказаться от сложности
нам просто нужно выяснить, когда
сложность имеет значение, и когда это не
и это проблема, я был
борется с годами, а затем пять
лет назад я снова работал над
довольно большая система с большим количеством людей
и в то же время я был
Университет, где прошел курс обучения в
судебной психологии, и я думаю, что
судебная экспертиза в целом имеет
красивый образ мышления, который хорошо отвечает
разработка программного обеспечения
но был один метод в
особенно, что я действительно хочу показать
вы это техника, называемая
профилирование географического правонарушителя
Профилирование географического правонарушения является
техника, которую мы используем, чтобы поймать серийный
и вы видите здесь пример
как это выглядит, это карта над городом.
город, который очень похож на Лондон
и вы видите эти зеленые точки, каждый из которых
эти точки представляют собой место преступления с
56 различных сцен преступления, и мы знаем
что эти 56 преступлений совершаются
тот же преступник, как мы знаем, что это
тот же преступник, возможно, у нас есть
убедительные доказательства, такие как ДНК или
отпечатки пальцев или мы только что обнаружили, что
это тот же modus operandi тот же
метод операции, используемый преступником
на разных местах преступления сейчас, что
вы делаете в географическом преступнике?
профилирование заключается в том, что вы используете
распространение этих преступлений на
вычислить поверхность вероятности и
Вероятностная поверхность — это импорт на мет
этический вес распределения
преступления , но мы также вес , который
формула с нашими знаниями о человеке
поведения и использования этой вероятности
мы теперь можем предсказать
наиболее вероятное месторасположение нашего
преступник, и это там в красном
и это то, что вы называете горячей точкой
и, согласно исследованию, существует
70% вероятность того, что наш нарушитель будет
его домашняя база там и причина, по которой я
думаю, это хорошо относится к программному обеспечению.
потому что думайте о том, что мы сделали, мы
приняли потенциально подавляющее
географической области и сузить ее до
намного меньшая часть намного меньше
часть того, что мы можем теперь сосредоточить на человеке
опыт и все еще быть уверен , что
мы поймаем этого преступника, так что, если мы
может сделать это в программном обеспечении, если мы
может взять эти ужасные миллионы строк
кода и сократить их до нескольких
горячих точек и знать, что если мы сосредоточимся на
там мы получаем реальный эффект
посмотрим, как это может выглядеть в программном обеспечении
здесь мы идем так, что это географический
профиль правонарушителя довольно большой
система, что вы видите там
около трехсот тысяч
строки кода и данные здесь
построенный из системы контроля версий
или поведенческий журнал, и он основан на двух
тысяча четыреста различных коммитов
и выявление закономерностей в этих
фиксации мы смогли спроецировать
вероятностная поверхность интуитивно понятна нашему коду
и используя эту поверхность вероятности, мы
способный прогнозировать наиболее вероятные
сбережения обслуживания в этом коде теперь я
пройдя вас через это
визуализация через минуту, но до того, как я
делать , что я просто хочу отметить, что
такой анализ на самом деле
социальный анализ, поскольку эти данные
на основе коллективного интеллекта
все предлагающие предложения все в порядке
что вы видите вы видите , что есть некоторые
большие синие круги каждого из них
большие синие круги представляют собой
подсистема — это иерархическая
визуализации, так что это в значительной степени следует
структуру папок вашего
проекта, а когда вы делаете детали и
широкомасштабные визуализации также
жизненно важно, чтобы вы поддерживали их
что мы можем увеличить масштаб и теперь до уровня
представляющих интерес, и если вы увеличите масштаб
на одной из этих подсистем вы увидите
что мы представляем каждый файл как круг
вы также увидите, что эти круги
имеют разные размеры, и это
размер курса используется для представления
сложность, так что сложность
вы измеряете код, и у нас есть
множество различных мер сложности
на выбор, и вы можете в принципе
выберите любой показатель, который вы хотите, потому что
все они имеют общее, что они
так же плохо, поэтому я склонен идти с
Простейшая вещь, которую я обычно выбираю
количество строк кода, которые также
имеет то преимущество, что является языком
нейтрально, но все же я сказал минуту назад
эта сложность сама по себе не является проблемой, поэтому
нам нужно что — то еще, что нам нужно
понять, действительно ли мы работаем в этом
кода или нет, нам нужно понять
частота изменения кода , и это
то вы вытаскиваете реверсию
контроль позже и интересная вещь
здесь, конечно, мы объединим эти
два измерения, потому что теперь мы можем
определить сложный код, который мы также
приходилось часто работать, и я покажу
вы в реальном мире изучают, как это
может показаться, что это исследование микрософт
проект с открытым исходным кодом Rozlyn и
roastin — действительно интересный проект
учиться, потому что руслан находится на открытом
исходной компиляторной платформы, и это на самом деле
включает в себя два компилятора
включает компилятор c-sharp, написанный в
c-sharp и визуальный базовый компилятор
написано в Visual Basic так Ruslan является
основание кода polyglot теперь, если мы посмотрим на
Лучшие горячие точки в Руслане прямо сейчас вы
будет видеть , что число один горячая точка
что-то называемое командной строкой и
написано в c-sharp еще одна верхняя горячая точка
в Руслане называются тесты командной строки
и он написан на Visual Basic
hmmm Интересно, если какой- то
отношения между этими двумя в нескольких
минут мы увидим технику
что помогает нам ответить на этот вопрос, но
пока я просто хочу указать, что
эти горячие точки выглядят крошечными на экране
но это просто по размеру
Рослин Руслан огромен, что вы видите
существует почти четыре миллиона строк
кода и каждой из этих команд
тесты — это файл с 7000 строк
кода, и я также хотел бы утверждать, что
у вас было 7000 строк кода в файле
так называемые тесты командной строки, возможно, что
не является хорошей единицей теста и что я
было бы в этом случае, что я буду
искать разные обязанности
и начать разбивать этот файл на
отдельные тестовые сюиты, например, для
разбор одного для проверки для чтения
флагов отладки, и если вы сделаете это каждый
из тех новых тестовых файлов, конечно,
легче рассуждать в
изоляции, но это не самый
важная вещь самая важная вещь
заключается в том, что вы получаете совершенно новое
контекст , потому что теперь , если вы по- прежнему
сделайте анализ «горячих точек», как вы
уметь видеть, какие части решения
что вам удалось стабилизировать и какие
части, которые продолжают меняться
так что сплоченность — это инструмент, который дает вам
дополнительное понимание эволюции
вашего кода еще одно замечание о том, что
заставили вас увидеть, что эти два модуля они
были тестовым кодом, и это снова
то, что я нашел снова и снова
что худшие нарушители кода имеют тенденцию
быть в тестовом коде, и я думаю, что основной
Причина в том, что мы разработчики
мы склонны делать умственный разрыв на одном
у нас есть этот код каникул, и мы
знаю , что это очень важно , что мы держим его в чистоте
что можно поддерживать и
с другой стороны, мы имеем
тестовый код, и большую часть времени мы
счастлив, если мы обойдемся, чтобы написать любой из
это вообще, и я думаю, что это
опасный парень, потому что из
перспективы обслуживания
нет разницы между тестовым кодом и
код приложения, и если у вас есть тесты
не хватает качества, они удержат вас
все в порядке, поэтому давайте посмотрим, какие горячие точки
фактически принесли нам, когда мы добавили
мы можем
сузить количество кода, который нам нужен
исследовать еще больше и типично
найти, что мы можем сузить до
всего от трех до шести процентов в зависимости от
база кода, и это важно
потому что те, кто свободен до шести процентов, они
скажите, какая часть кода должна
мы фокусируем усовершенствования , чтобы получить
оба улучшения в обоих
производительности и качества и причины
Я говорю, что качество связано с тем, что горячие точки имеют тенденцию
быть сильным предиктором всех дефектов
так что давайте сейчас оставим горячие точки
на какое- то время и поговорить о чем-то
говорить совершенно разные ДАВАЙТЕ про
основного инструмента в качестве разработчиков программного обеспечения и
Я не говорю о компиляторе, я
не говоря о ID не Emacs не
даже vim, я говорю о мозге и
причина, по которой я хочу поговорить о
мозг — это потому, что ваш мозг не
всегда работать в ваших интересах и
покажите вам пример, я хочу сделать
здесь, пожалуйста, подумайте о
последний крупный проект, над которым вы работали
возможно, проект, над которым вы работаете
теперь, сколько из вас знают, где
горячие точки в этой кодовой базе несколько
вы десять человек , может быть , пожалуйста , держите ваши
если вы на 100% немного
твоя крутая велика, ты вполне можешь быть прав
Меня беспокоит то, что если 100
лет психологического исследования
научил нас всему, что мы, люди
мы не можем действительно доверять нашему собственному суждению
и объяснить, что я имею в виду, что мы
нужно говорить о чем-то другом
да, правильно, нам нужно поговорить о
гориллы, так что это один из моих любимых
психологические эксперименты, которые вы вполне можете
слышал об этом довольно известный , который
было сделано еще в 90-х годах и что
исследователи сделали здесь, что они
записать видео
двух команд, играющих в баскетбол
друг против друга, а ваша задача —
участником этого эксперимента было
подсчитайте количество процессов сейчас, когда вы
сел и посмотрел, как играют две команды
баскетбол что-то странное
произошло, потому что вдруг мужчина одет
в костюме гориллы проходит через
баскетбольное поле останавливается прямо перед
камера поворачивается к вам и запускает
бить ему на грудь, тогда он уходит
после того, как вы увидели это видео
исследователи спросят вас, вы заметили
ничего особенного, и вы сказали бы о
конечно, человек, отдыхающий настоящим костюмом
это немного странно, но это не так.
что случилось , тогда получилось больше
чем 50% участников не смогли
см. горилла и последующие
эксперимент показал, что люди не могут
видеть горилла, даже если это правильно в
перед их глазами, даже когда изображение
горилл попадает в сетчатки, которые мы не смогли
чтобы увидеть это, и причина этого
потому что ты не видишь своими глазами
смотрите своим мозгом и чтобы
воспринимать что-то, что нам нужно, чтобы сфокусировать наши
внимание на нем, но ваше внимание было
направленных на подсчет количества
проходит и для нас вопрос здесь
если мы люди, если мы способны
что-то очевидное, как
горилла, какой риск мы будем
пропустите горилл в нашем собственном коде, что
риск того, что мы будем игнорировать наши горячие
и я думаю, что он идет глубже, чем
что
потому что теперь я говорил о неудаче
человеческого разума немного, но это
оказывается, мы, люди, действительно на самом деле
хороши в некоторых вещах, и одно, что мы
исключительно хорошо , что является
рационализировать решения и считает, что
мы даже не разделяем, поэтому позвольте мне объяснить
как это работает, это что-то
совершенно разные, если вы принимали участие в
этот эксперимент состоял в том, что
вам показывают две фотографии из двух
разные лица и ваша задача Assaf
участник должен выбрать
сталкиваются вы находите наиболее привлекательным когда — то
Вы сделали свой выбор в
исследователи передадут вашу копию этого
фото только они не обманывают тебя так
вы действительно получаете копию
папку, которую вы не выбрали, и теперь они
делать что-то действительно действительно злое, потому что
они просят вас, пожалуйста, мотивируйте свой выбор
интересно подумаем об этом для
в то время как мы сидим там с копией
фото, которое мы не выбрали и сейчас
попросили мотивировать выбор, который мы
не делал, и снова вы могли бы подумать, что
если что-то подобное случится с вами
вы, конечно, сразу заметите
и снова это не то, что произошло.
Оказалось, что более двух третей
участники не заметили
обмен и если вы читаете оригинальные исследования
действительно здорово, потому что у них есть
Транскрипция интервью и
мотивы, которые люди так дали, например
у вас была эта женщина, которая говорит, что я
выбрал эту папку, потому что я действительно
любил серьги в папке, которую вы
на самом деле выбрали не показывать серьги
вообще и, конечно , это действительно
уверенный человек, который говорит, что я выбрал
эта папка, потому что я действительно предпочитаю
блондинки в действительности фото, которое он выбрал
показала, что темноволосая женщина теперь
только что рассказали вам о наших двух
примеры когнитивных предубеждений на
индивидуальный уровень, но если вы хотите увидеть
вот что вы делаете
вы принимаете несколько человек
их вместе и назвать, что команда и
объяснить, что я имею в виду, нам нужно путешествовать
во что, возможно, можно
неэтичные углы, но я обещаю вам, что я
будет держать это хорошо, поэтому, пожалуйста, просто расслабьтесь
позвольте мне задать вам вопрос, а не как
многие из вас получили совет
что если вы хотите сделать реальное воздействие
на собрании вы должны говорить сначала просто
некоторые из вас хорошо в этом контексте, это
на самом деле хороший совет, потому что он
что это
первый человек, который выступает на собрании
купит нам всю дискуссию
купите нам всю группу, но есть
даже подлый способ получить то, что вы хотите
и это называется вокалом
меньшинства и вокальные меньшинства
основанный на том, что мы, люди, когда
мы слышим повторение мнения и
мы снова считаем, что это
мнение более популярно и широко распространено
чем это на самом деле, и это правда даже
когда один и тот же человек повторяет
такое же мнение снова и снова, чтобы все
Я должен сделать, чтобы манипулировать вами
это повторять такие вещи, как вы
знайте, что общий lisp — отличный
язык программирования
вы видели общий lisp, это
удивительный язык сейчас я стараюсь быть хорошим
человек, поэтому я буду только манипулировать вами в
хороший способ общего lisp действительно здорово
но что, если бы это было наоборот
например, скажем, кто-то жалуется
много
вы видели, что код сетевого модуля
это дерьмо, что код сетевого модуля мы
просто нужно выбросить его , это так паршиво
как вы думаете, что мнение будет
влияют на вашу идею о том, где мы прошли
горячие точки и причина, по которой я говорю вам
это потому, что я действительно действительно
хотите сделать случай со следующего слайда
потому что это, вероятно, самый
важная вещь, которую я собираюсь рассказать вам
сегодня используйте свою интуицию ,
опыт , но убедитесь , чтобы поддержать ваши
решения с данными все в порядке, давайте двигаться
от горилл и групп, и все это
Я говорил о моделях изменений в
наши высказывания, и я хочу поговорить о
сюрприз и стоимость сюрприза и
причина, по которой я хочу поговорить об удивлении
потому что сюрприз — один из самых
дорогие вещи , которые вы можете поместить в
программной архитектуры и
различные виды сюрпризов
Мне нравится показывать вам первый вид
удивление , показывая вам, что должно быть
мой неизменный любимый код, это действительно
произведение искусства , это код из
Проект Apollo, так что это код, который
на самом деле доставили нас на Луну, так что пожалуйста
взгляните на эту красоту, в частности
сосредоточьтесь на комментариях, сколько из вас
хотите пойти на луну на этом коде, чтобы
можно утверждать, что это сюрприз
для конечного пользователя, который не является
Я хочу поговорить сегодня
хочу поговорить об удивлении мы
разработчики оставляют за бедными
программа обслуживания идет за нами
и я хочу показать вам, как концепция
называемая временная связь помогает нам
раскрыть эти сюрпризы
сейчас интересна временная связь
потому что он настолько отличается от способа
мы, разработчики, обычно говорим о
когда разработчики говорят о
что мы обычно называем
зависимость между различными частями и
части временного соединения различны
потому что он не измеряется от кода
временная муфта измеряется от
эволюции вашего кода, так что это
что-то мы выходим из контроля версий
позже и временная связь
файлы, два или более, которые продолжают меняться
вместе со временем, возможно, даже в
тот же комментарий, и я хочу показать вам, как
который выглядит, глядя на другую реальную
это систематическое исследование из
asp.net MVC asp.net MVC они имеют тенденцию
много внимания уделяйте автоматическим испытаниям, поэтому, если вы
посмотрите на их базу кода, они на самом деле
имеют больше тестового кода, чем приложение
кода, и это следствие, если вы это сделаете
наш анализ временной связи вы будете
что большинство ваших темпурных пар
или между тестовым кодом и
проверить и это не удивительно , на всех
это на самом деле то, что мы ожидаем на самом деле
Я был бы обеспокоен, если это временное
зависимости не было, потому что
вероятно, означает, что наши тесты не являются
сохранились до настоящего времени , так что я , как правило, выглядят
вместо или
у наших пар не было легкого объяснения
возможно, что-то подобное в этом
база кода у нас есть два разных файла
один называется помощником тега скрипта и одним
называется помощником тега ссылки, и если вы
посмотрите на код, который вы увидите, что
нет никакой прямой зависимости между
их все же они продолжают меняться вместе
89 процентов всех совершают, как это может
случается , когда я нахожу что — то вроде этого я
всегда смотрите на код, но сегодня я
собирается делегировать эту ответственность
вы так, что произойдет сейчас, так это то, что я
собираюсь поставить копию тега сценария
помощник рядом с помощником тега ссылки
вы готовы
ваша задача — посмотреть, сможете ли вы
вот здесь тонкая картина здесь
мы идем здесь, с помощью скрипта tag helper let’s
поместите ссылку тега помощник рядом с ним
обратите внимание на рисунок да, это то, что я
найти в довольно многих случаях дорогой старый
мой друг копирует / вставляет, но я думаю
Я немного несправедлив здесь
потому что это не копирование / вставка
потому что они сделали что — то где
они фактически обновили копию
вложенные имена свойств и еще более редкие
это то, что вы почти никогда не находите
они обновили его, скопируйте
документации , так это мои друзья это
на самом деле не копировать пасту, это больше похоже на
скопировать пасту с золотым покрытием, но все же
соединение tempura — отличный инструмент для
раскрыть сюрпризы в нашем собственном коде, но мы
может сделать еще больше с ним мы можем его использовать
анализировать полное программное обеспечение
архитектуры, и я хотел бы показать вам
пример из микро-услуг, почему
микро-услуги курс прямо сейчас
микросервисы — все это ярость и что
просто означает, что завтрашнее наследие
Системы будут микро услуги
так это то, как выглядят микросервисы
в PowerPoint
в действительности они, как правило, выглядят намного больше
так вот мы разработчики у нас есть
уроки мы должны абстрагироваться общий
так что, возможно, мы представим
общая библиотека обмена, которую мы замечаем
совместно пары доступа к базе данных , так что давайте
отвлечь их и от
Конечно, мы хотим следовать
рекомендации по предоставлению общего
шаблон услуг таким образом , чтобы все наши
службы ведут себя одинаково и
очевидно, мы хотим сделать наши услуги
проще всего использовать, поэтому давайте
ввести кучу клиентских библиотек
теперь каждый из этих выборов вполне может
будь то хорошо, что вы должны следить за
хотя в микро-службах
сцепление является королем, как только мы начинаем
пара разных услуг друг другу
мы теряем большинство преимуществ
архитектуры микросервиса и оставлены
с избытком беспорядок сложности так
я предлагаю , чтобы мы использовали временные
не для отдельных файлов, а для
уровень обслуживания , и мы высматривать
удивительные модели , как это , где
несколько сервисов меняются вместе из- за
общей библиотеке или еще хуже, когда
несколько служб развиваются вместе, как
как это, и если вы делаете временную
такой анализ регулярности
вы сможете обнаружить такое предупреждение
знаки в вашей архитектуре рано, так что
вы можете реагировать вовремя, так что помните, что я
начал эту презентацию, поговорив
об организациях, и я хотел бы
сделайте еще шаг и на самом деле
утверждают, что большинство организационных проблем
ошибочны как технические проблемы, так и
главная причина этого в том, что социальная
информация — это то, что
невидимый в коде, это просто не
там и для решения этих проблем
проблемы, которые нам нужны, чтобы объединить наш код
с социальной информацией здесь один
подход — это пример другого
проект с открытым исходным кодом — это
разработка программирования закрытия
язык, и это визуализация
называемые фрактальными фигурами фрактальные фигуры
работает так, как вы считаете каждый файл
как ящик, и каждый программист получает
назначил цвет и тем больше
программист внес свой вклад в
увеличьте площадь своего окна, теперь вы можете
используйте фрактальные фигуры для большого количества
разные вещи, например, если добавить
цветная легенда
мы получаем полезный инструмент коммуникации, давайте
скажем, что мы присоединяемся к этому проекту, который мы хотим
способствовать закрытию, и мы хотим
внести вклад в модуль оценки в
в верхнем левом углу мы видим, что
код написан Stewart Ella way так
если у нас есть вопрос об этом коде
Стюарт, вероятно, многое знает об этом
мы также видим, что замыкание вообще
написанный синим разработчиком, поэтому, если
у нас есть богатый Хикки, поэтому, если вы
когда-либо подвергались сомнению закрытием в целом
хорошо перепроверьте, он, вероятно, знает что-то
или два, но фрактальные цифры
полезно даже без цветовой легенды
потому что теперь мы хотим следить за
таких удивительных моделей, когда мы
имеют еще 20 разных разработчиков
способствуя тому же самому фрагменту кода
и причина, по которой мы хотим
это потому, что исследования научили нас
что число разработчиков за
кусок кода является одним из лучших
предиктор по числу качеств
вопросы, которые вы найдете, и фрактальные цифры
помогает идентифицировать эти модули под угрозой
для дефектных фрактальных фигур также
много объясняет наши горячие точки
иногда я встречаюсь с довольно старым кодом
код базы, который был вокруг 10-15
лет и то, что я обычно вижу в этих
Основы кода заключаются в том, что большая часть кода
стабильный и затем мы имеем целый ряд
действительно красные светящиеся горячие точки в
центральные части этого кода и когда я
найти что-то вроде этого всегда смотреть
назад во времени, и я вижу, что эти горячие
пятна были вокруг в течение многих лет
поэтому вопрос фольклорной риски для из
конечно, почему никто ничего не сделал
о них
почему они не улучшили код?
вы знаете причину, по которой многие существующие
код никогда не улучшается, причина в том, что
потому что фрактальные фигуры выглядят как
это так, что у вас есть люди, которые
работать в этом коде все время, которое
означает, что вы будете влиять на работу всех
эти люди, если вы попытаетесь перепроектировать этот
и это оставляет нас в очень
неудачная ситуация, которая называется
непреложный дизайн и, пожалуйста, доверяйте мне
это я функциональный программист, но
в этом контексте нет ничего хорошего в
с неизменностью, и я нахожу это ироничным
что мы не можем улучшить код, потому что
мы так много людей работаем над этим в
параллельно, и мы должны быть такими
люди крест, мы не можем улучшить
код в порядке, давайте двигаться дальше, давайте
просто говорили о распределении знаний
давайте обратим внимание на наших слепых
и я хочу рассказать вам немного
рассказ о Поле Филлипсе, который вы видите
здесь, на экране, Поль Филлипс
работа в базе кода Scala
любое слово на Scala в течение пяти лет и
в течение этих пяти лет Пол Филлипс
был вкладчиком номер один в Scala
затем два года назад Пол Филлипс сделал
это отличная презентация, что я
действительно рекомендую и связываю там, где
он объявляет о своем решении отступить
и прекратить вклад в Scala до сих пор
это отличная возможность увидеть
что происходит, когда главный разработчик
листья, поэтому я изучил знания
потери, и это через два года после Пола
Филлипс оставил здесь то, что
потеря знаний выглядит, как в Scala you
видеть эти красные области, в этом случае они
не представляют никаких горячих точек, нет
представляют собой заброшенный код, который является кодом
что не написано разработчиком , который нет
более длинная часть организации и
это то, что вы, конечно, можете использовать
рассуждать о распределении знаний
вы видите, что большая подсистема для вашей
это то, что называется компилятором
которые могут быть важны, но вы также можете
используйте его немного более активно и смотрите
для таких вещей, где вы
вся оставленная подсистема в этом случае
они являются читаемым контуром печати, поэтому используйте его в
случае , если вы знаете , что вы планируете некоторые
функции, которые вы видите, чтобы запланировать некоторые
дополнительное время для обучения, потому что
представляет собой чрезвычайно повышенный риск изменения
код , который мы уже не понимаем , все
правильно
Я в своем окончательном наблюдении теперь у меня есть
удалось добиться успеха с помощью поддерживаемого кода
мы должны сделать это весело, я работаю над
компания называется ампер, и мы делаем большую часть
наше развитие в закрытии и люди
часто спрашивайте меня, почему вы выбрали закрытие
и я мог бы, конечно, сказать им что- нибудь
как вы знаете, мы делаем анализ данных
и закрытие — это бывший
и инструмент для анализа данных
Я не знал этого, когда мы начали
Мне просто повезло, что причина
закрытие не имеет ничего общего с
технологии
Эпическое закрытие , потому что это выглядело забавный , я
хотел изучить язык, и я думаю
эта забава намного недооценивает
водитель знака на самом деле весело много
недооценивать мотивацию в
индустрии программного обеспечения, потому что
практически гарантия того, что
если вы работаете в большой базе кода
всегда помните, чтобы вставить в это удовольствие
даже если вы заблокированы в своем
выбор технологии и платформы
всегда есть много поддерживающего кода
написать вокруг него множество задач, чтобы
автоматизировать, поэтому выберите обыденную задачу использования
технологии по вашему выбору для автоматизации
и превратить его в опыт обучения
ваш код будет благодарен вам за это
так что я сделал сейчас , и прежде чем я принять некоторые
вопросов
Я просто хочу воспользоваться этой возможностью и
Большое спасибо за то, что вы меня слушали и
помните, что Common Lisp — это
отличная благодарность
так что спасибо, поэтому первый вопрос, который
Мне было пять раз, как я могу получить это
как я могу получить эти показатели самостоятельно
на моей собственной базе кода да, так что это
вопрос, который часто дает то,
инструменты, которые я использую, и сзади я на самом деле
использовать мои собственные инструменты и причину, которую я делаю
это потому , что
это не было доступных инструментов, которые
мог бы это сделать , проанализировать это я
хотел сделать так, что у меня свои собственные
и в прошлом году я решил сосредоточиться
полный рабочий день, поэтому я знаю, как мой
стартапов и сверстников были разработаны те
инструментов, и у нас есть некоторые инструменты
доступно сейчас и что скоро появится
наш сервис, чтобы вы могли на самом деле
зарегистрироваться и получить анализ всех ваших
код для этой службы , и мы
вероятно, скоро начнется предварительный просмотр
поэтому войдите, если вы хотите попробовать это oli
делает что зацепить против GitHub очень
похоже, да, хорошо, хорошо, поэтому um
другим вопросом здесь является число
времени, когда файл был
хорошая мера, потому что иногда вы можете
в течение дня изменить файл, который вы знаете 60
раз да, так что на самом деле было два
вопросы там в первую очередь да
сколько раз файл был изменен в
действительно действительно хорошая мера, и это
фактически подкрепленные эмпирическими исследованиями
количество изменений модуля
является лучшим предиктором, чем любой другой
метрику, которую вы можете использовать из кода, но
все же, это, конечно, важно
потому что могут быть огромные различия
в стилях коммитов между предложениями на
проекта и то, что обычно рекомендуется
заключается в том, что вы пытаетесь использовать единую фиксацию
если вы не можете найти, что есть
альтернативный показатель, который вы можете использовать
так называемый оттормальный код, поэтому вместо
вычислить количество
вычислить объем кода, который имеет
изменено и полностью удаляет
смещение, возможно, введенное путем совершения
и вот как вы извлекаете свои показатели
да, я использую эти два, и я склонен
снова придерживайтесь количества коммитов
если это возможно, потому что это такое
простая метрика, настолько интуитивно понятная
причина в этом так и последний вопрос
здесь вы можете порекомендовать хорошее место в
центр города на вечеринку после
пойти на вечеринку , да , я знаю много
действительно хорошие щенки на юге
Швеция, где я родом , не поможет
ты так жаль, что я делегирую тебе
что да, я не уверен, что смогу помочь
вы либо Спасибо
Please follow and like us:

Be First to Comment

Добавить комментарий