Google — это 2 миллиарда строчек кода
Издание Wired обратило внимание на выступление сотрудницы Google Рейчел Потвин «The Motivation for a Monolithic Codebase», которое состоялось в рамках конференции в Кремниевой долине. В своём докладе она оценила число строк кода, который отвечает за работу всех интернет-сервисов Google: выяснилось, что число равно примерно 2 миллиардам. Если провести некорректное сравнение и учесть, что Windows содержит примерно 50 миллионов строк кода, то получается, что с 1998 года в Google успели написать 40 операционных систем от Microsoft, которая разрабатывается с 1985 года. Мало того, весь этот «Google-код» находится в едином репозитории, которым ежедневно пользуются 25 000 сотрудников поискового гиганта.
Рейчел заметила, что такой принцип хранения исходников позволяет разработчикам Google «… чувствовать необычную свободу в использовании и комбинировании кода других проектов». Единственное существующее ограничение — это доступ к коду, реализующему алгоритмы ранжирования Google’s PageRank, которые являются основой бизнеса, критичного для поискового гиганта. К этим файлам имеют доступ только специально выделенные сотрудники. В целом для управления кодом в Google используется собственная VCS, которая называется Piper и которая в свою очередь опирается на серьёзную инфраструктуру, состоящую из 10 дата-центров.
Любопытна статистика, приведённая Рейчел. По её словам, Piper управляет 85 терабайтами данных «Google-кода», в который ежедневно 25 000 разработчиков делают примерно 40 000 коммитов. Таким образом за каждую неделю модифицируются 250 000 файлов и 15 миллионов строк кода. В сравнении с Linux, которая вся насчитывает примерно 40 000 файлов, работа программистов Google выглядит фантастической.Также Рейчел отметила, что сейчас Google и Facebook вместе работают над новой open source VCS, которую можно будет использовать на проектах любого масштаба, сравнимого даже с самой Google. Интересно, что основой будущей VCS является не модная среди разработчиков git, а Mercurial, которую пытаются масштабировать до уровня, с которым приходится иметь дело обоим интернет-гигантам.
Значения метрик кода
Повышенная сложность современных приложений программного обеспечения также повышает сложность обеспечения надежности и обслуживания кода. Метрики кода представляют собой набор оценок программного обеспечения, которые дают разработчикам более глубокое представление о разрабатываемом коде. Используя преимущества метрик кода, разработчики могут понять, какие типы и методы следует переработать или более тщательно протестировать. Команды разработчиков могут определить потенциальные риски, понять текущее состояние проекта и отслеживать ход разработки программного обеспечения.
Разработчики могут использовать Visual Studio для создания данных метрик кода, которые измеряют сложность и удобство обслуживания управляемого кода. Данные метрик кода можно создать для всего решения или одного проекта.
Сведения о создании данных метрик кода в Visual Studio см. в статье «Практическое руководство. Создание данных метрик кода».
Измерения программного обеспечения
В следующем списке показаны результаты метрики кода, вычисляемые Visual Studio:
- Индекс доступности — вычисляет значение индекса от 0 до 100, представляющее относительную простоту поддержания кода. Высокое значение означает лучшую поддержку. Цветные закодированные оценки можно использовать для быстрого выявления проблемных мест в коде. Зеленый рейтинг составляет от 20 до 100 и указывает, что код имеет хорошую поддержку. Желтый рейтинг составляет от 10 до 19 и указывает, что код является умеренным. Красный рейтинг — это рейтинг от 0 до 9 и указывает на низкую поддержку. Дополнительные сведения см. в разделе «Диапазон индексов поддержки» и «Значение».
- Цикломатическая сложность — измеряет структурную сложность кода. Он создается путем вычисления количества различных путей кода в потоке программы. Программа, которая имеет сложный поток управления, требует больше тестов для достижения хорошего покрытия кода и менее поддерживается. Дополнительные сведения см. в разделе «Цикломатическая сложность».
- Глубина наследования — указывает количество различных классов, наследуемых друг от друга, вплоть до базового класса. Глубина наследования аналогична связыванию классов, что изменение базового класса может повлиять на любой из унаследованных классов. Чем выше это число, тем глубже наследование и чем выше потенциал для изменений базового класса, что приведет к критическому изменению. Для глубины наследования низкая ценность хороша, и большое значение плохо. Дополнительные сведения см. в разделе «Глубина наследования».
- Объединение классов — измеряет связь с уникальными классами с помощью параметров, локальных переменных, возвращаемых типов, вызовов методов, универсальных или шаблонных экземпляров, базовых классов, реализаций интерфейса, полей, определенных во внешних типах и оформлении атрибутов. Хороший дизайн программного обеспечения диктует, что типы и методы должны иметь высокую сплоченность и низкую связь. Высокая связь означает дизайн, который трудно использовать и поддерживать из-за его многочисленных взаимозависимостей по другим типам. Дополнительные сведения см. в разделе «Связь классов».
- Строки исходного кода — указывает точное количество строк исходного кода , присутствующих в исходном файле, включая пустые строки. Эта метрика доступна начиная с Visual Studio 2019 версии 16.4 и Microsoft.CodeAnalysis.Metrics (2.9.5).
- Строки исполняемого кода — указывает приблизительное количество строк или операций исполняемого кода . Это количество операций в исполняемом коде. Эта метрика доступна начиная с Visual Studio 2019 версии 16.4 и Microsoft.CodeAnalysis.Metrics (2.9.5). Значение обычно близко соответствует предыдущей метрике, строкам кода, которая является метрикой на основе инструкций MSIL, используемой в устаревшем режиме.
Анонимные методы
Анонимный метод — это просто метод , который не имеет имени. Анонимные методы чаще всего используются для передачи блока кода в качестве параметра делегата. Результаты метрик кода для анонимного метода, объявленного в элементе, например методе или методе доступа, связаны с элементом, объявляющим метод. Они не связаны с членом, который вызывает метод.
Созданный код
Некоторые средства программного обеспечения и компиляторы создают код, добавленный в проект, и что разработчик проекта либо не видит, либо не должен изменяться. В основном метрики кода игнорируют созданный код при вычислении значений метрик. Это позволяет значениям метрик отражать то, что разработчик может видеть и изменять.
Код, созданный для Windows Forms, не игнорируется, так как это код, который разработчик может видеть и изменять.
Связанный контент
- Практическое руководство. Создание данных метрик кода
- Использование окна результатов метрик кода
От тысяч до миллиардов. Сколько строк содержат кодовые базы Google, Facebook, Twitter и других ресурсов
Ресурс World of Statistics привел данные по количеству строк кода, содержащему известные мировые программные платформы.

Текст: Вікторія Горбік Теги: код, google, facebook, twitter
Нашли ошибку в тексте — выделите её и нажмите Ctrl+Enter. Нашли ошибку в тексте — выделите её и нажмите кнопку «Сообщить об ошибке».

УЧАСТЬ В АЗАРТНИХ ІГРАХ МОЖЕ ВИКЛИКАТИ ІГРОВУ ЗАЛЕЖНІСТЬ. ДОТРИМУЙТЕСЯ ПРАВИЛ (ПРИНЦИПІВ) ВІДПОВІДАЛЬНОЇ ГРИ.
Ліцензія видана ТОВ «СЛОТС Ю.ЕЙ.» на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 15.09.23 (рішення КРАІЛ №245 від 31.08.2023); ТОВ «СЛОТС Ю.ЕЙ.» – на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 26.04.2021 (рішення КРАІЛ №150 від 12.04.2021); ТОВ «СПЕЙСИКС» – на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 08.02.2021 (рішення КРАІЛ №34 від 02.02.2021); ТОВ «ГЕЙМДЕВ» – на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 16.02.2021 (рішення № 47 від 10.02.2021).
Ограничение строки командной строки (Cmd. exe)
В этой статье рассматривается ограничение длины строк, используемых из командной строки в командной строке (Cmd.exe). Он также предоставляет методы, которые можно использовать для обхода этого ограничения.
Область применения: Windows Server 2012 R2, Windows Server 2008 R2 с пакетом обновления 1 (SP1), Windows 7 с пакетом обновления 1 (SP1)
Исходный номер базы знаний: 830473
Дополнительные сведения
Максимальная длина строки, которую можно использовать в командной строке, составляет 8191 символ.
Это ограничение применяется к:
- командная строка
- отдельные переменные среды, наследуемые другими процессами, такими как переменная PATH
- все расширения переменных среды
Если для выполнения пакетных файлов используется командная строка, это ограничение также применяется к пакетной обработке файлов.
Примеры
В следующих примерах показано, как это ограничение применяется к командам, которые выполняются в командной строке, и командам, используемым в пакетном файле.
-
В командной строке общая длина следующей командной строки не может содержать более 8191 символа:
cmd.exe /k ExecutableFile.exe parameter1, parameter2. parameterN
cmd.exe /k ExecutableFile.exe parameter1, parameter2. parameterN
c:> set EnvironmentVariable1 = EnvironmentVariable2 EnvironmentVariable3
ExecutableFile.exe parameter1 parameter2
Как обойти ограничение
Чтобы обойти ограничение, используйте один или несколько из следующих методов в соответствии с вашей ситуацией:
-
Измените программы, для которых требуются длинные командные строки, чтобы они могли использовать файл, содержащий сведения о параметрах, а затем включить имя файла в командную строку. Например, ExecutableFile.exe Parameter1 Parameter2. ParameterN вместо использования командной строки в пакетном файле измените программу, чтобы использовать командную строку, аналогичную следующей командной строке, где ParameterFile — это файл, содержащий необходимые параметры (parameter1 parameter2. ParameterN:
ExecutableFile.exe c:\temp\ParameterFile.txt
- Используйте более короткие имена для папок и файлов.
- Уменьшите глубину деревьев папок.
- Храните файлы в меньшем количество папок, чтобы в переменной среды PATH было необходимо меньше папок.
- Изучите возможные методы, которые можно использовать для уменьшения зависимости PATH для поиска .dll файлов.
Обратная связь
Были ли сведения на этой странице полезными?