Рубрики
Без рубрики

Могут ли Devs Java и C ++ написать лучше кода Python, чем Devs Python?

У каждого человека есть свой собственный, уникальный стиль, который я прочитал, и суммирую программные работы для развлечения, … Tagged с помощью программирования, Python, Java, CPP.

У каждого человека есть свой, уникальный стиль

Я читаю и суммирую программные документы для развлечения, и сегодня мы рассмотрим Разработчики Java пишут лучше Python? Изучение качества кода вне языка на GitHub (2018) от Хорхига, Маттиса и Хиршфельда.

Вещи часто могут быть закодированы по -разному. Например, вы можете использовать разные алгоритмы, Используйте меньше или более строк кода Реализуйте функциональность, используя разные библиотеки или фреймворки или используйте определенный стиль кода.

Почему это важно

Большинство языковых сообществ программирования имеют Кодирующие соглашения . Эти конвенции гарантируют, что код, написанный разными людьми, выглядит одинаково. Это может сделать код более читабельным, менее подверженным ошибкам и более подготовленным.

Проведите достаточно времени с языком, и вы в конечном итоге сможете применять все конвенции языка без особых усилий.

Тем не менее, на каждом языке есть свои собственные соглашения о кодировании (*). Так что же происходит, когда вы переходите на другой язык? Вы можете написать код, который менее поддерживается или более подвержен ошибкам. Или, может быть, вы на самом деле можете писать Лучше Код, потому что на вашем новом языке есть меньше (или хуже) конвенций.

(*) И в некоторых случаях на самом деле существует несколько наборов конвенций!

Ну, давайте выясним, что происходит!

Как было проведено исследование

Очень большая часть сегодняшней разработки с открытым исходным кодом происходит на GitHub Анкет GitHub предоставляет API, который можно использовать для получения данных о своей платформе, но есть (или было) также GHTorrent Project Это отражало репозитории GitHub (общественные части), профили пользователей, коммиты, проблемы и другие артефакты.

Исследователи использовали последнее, чтобы искать разработчиков, которые внесли большое количество вкладов на свой основной язык, и гораздо меньшее число на некотором вторичном языке. Мы можем рассматривать этих разработчиков как к экспериментальной группе. Нам также нужна контрольная группа; Этот состоит из пользователей, которые внесли свой вклад только с использованием одного языка программирования.

Затем исследователи добывали набор данных для проектов, которые были отредактированы разработчиками, использующими их вторичный язык.

Для этого исследования они рассмотрели проекты Python, которые были отредактированы разработчиками Java и C ++. Они сравниваются с проектами Python, которые были отредактированы только разработчиками Python.

Чтобы изучить эффект переключения языка, все проекты были проанализированы с использованием Pylint , который может найти различные типы проблем в коде Python:

  • фатальный ошибки, которые приводят к коду, который вообще не работает;
  • Ошибки Это вызывает ошибки времени выполнения при выполнении кода;
  • Предупреждения для кода, который подвержен ошибке или имеет серьезные проблемы с стилем;
  • рефакторинг намеки на сложный или грязный код; а также
  • Нарушения кодирования Конвенции Анкет

Какие открытия были сделаны

В конечном итоге анализ включал данные для 84 разработчиков Java, 91 разработчиков C ++ и 100 разработчиков Python.

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

1.44 3.59 Линия слишком долго
1.52 1.43 Неправильное имя
1.83 Неправильный импорт
0.14 0.16 Негруппированный импорт
0.38 Плохое пробел
20.62 4.42 Ненужный полуколон
0.57 Переопределение встроенных имен
3.28 3.39 Плохое отступ
2.21 1.68 Переопределение внешнего имени
3.28 Неопределенная переменная цикла
0.81 0.63 Неиспользованный импорт
2.25 1.56 Неиспользованная переменная
1.48 0.84 Сложный метод/функция
0.46 0.26 Слишком много публичных методов
0.58 0.34 Слишком мало публичных методов
1.52 Нет, вернуться
1.55 Неопределенная переменная
28.27 Назначение из no return

Что может быть удивительным, так это то, что разработчики Java/C ++ иногда пишут Лучше Код, чем разработчики Python. Исследователи предоставляют следующие объяснения для каждого отдельного результата:

  • Слина слишком долго : Линии Python не должны быть длиннее 80 символов. Разработчики C ++ и Java имеют тенденцию писать линии, которые длиннее этого.

  • Недопустимое имя : Названия классов в Python должны быть наверняка, в то время как методы и имена поля должны быть Snake_cased. Программисты из двух других языков регулярно нарушают эти соглашения об именах.

  • Неправильный порядок импорта : Импорт модуля должен быть заказан таким образом, чтобы в первую очередь импортировались стандартные библиотеки, за которыми следуют сторонние библиотеки и, наконец, локальный импорт. Разработчики C ++ намного чаще нарушают эту конвенцию, но разработчики Java, похоже, делают то же самое, что и разработчики Python.

  • Негруппированный импорт : Несколько импортов из одного и того же пакета должны быть сгруппированы вместе. Разработчики Java и C ++ делают это чаще, чем разработчики Python.

  • Плохие пробелы : Разработчики C ++ и Java с меньшей вероятностью пропускают или добавляют слишком много пробелов вокруг операторов, кронштейнов и блоков, чем разработчики Python.

  • Ненужный полуколон : Python не нужны полуколоны в конце линий, но (особенно) разработчики C ++ и Java склонны добавлять их в любом случае.

  • Переосмысление встроенных имен : Разработчики могут случайно использовать имена переменных, которые уже используются для существующих имен (например, вход и str ) Это может вызвать неожиданные или запутанные ошибки. Разработчики Java делают это реже чем разработчики Python, несмотря на то, что они менее знакомы с языком. Вероятно, это связано с тем, что они используют IDE (что указывало бы на такие ошибки), а не простые текстовые редакторы. Плохое отступление

  • : Whitespace важен в Python, поэтому он помогает, если вкладки и пространства используются последовательно. Разработчики Java и C ++ не так хороши в этом, как разработчики Python. Переопределение внешнего имени

  • : Задержки имена из внешних областей не поощряются в Python, но разработчики Java и C ++ делают это чаще, чем разработчики Python. Неопределенная переменная цикла

  • : Использование переменных цикла за пределами цикла может быть полезно в некоторых ситуациях, но только тогда, когда цикл был фактически выполнен. Разработчики C ++ в 3 раза чаще пишут код с потенциально неопределенными переменными. Неиспользованный импорт

  • : Разработчики Java и C ++ с меньшей вероятностью имеют неиспользованный импорт в своих файлах. Неиспользованная переменная

  • : С другой стороны, разработчики Java и C ++ – Подробнее вероятно, забудет о ранее определенных переменных. Сложный метод/функция

  • : Разработчики C ++ с большей вероятностью пишут методы или функции с цикломатической сложностью выше 10. Слишком много публичных методов

  • : Разработчики Java и C ++, как правило, проводят меньшие классы и, следовательно, не сталкиваются с этой проблемой так часто. Слишком мало публичных методов

  • : Наоборот, где классы просто используются в качестве прославленных структур данных без какого -либо собственного поведения, также встречается реже с разработчиками Java и C ++. Нет, возвращение

  • : Имея иначе утверждение после Если считается плохим стилем. Разработчики C ++ используют это чаще, чем разработчики Python. Неопределенная переменная

  • : Неопределенные переменные часто не доступны Прямо сейчас , но может стать достижимым, когда код будет изменен в будущем и, таким образом, вызывает ошибки позже. Разработчики C ++ с большей вероятностью пишут код с неопределенными переменными. Назначение из no return

  • : Разработчики Java с большей вероятностью будут использовать функции «void» в назначениях или в качестве выражений, возможно, потому, что они были бы проверены на Java во время компиляции, но не на Python.

Кстати…

Вы пишете код? Если это так, я был бы очень благодарен, если бы вы могли Участвовать в моем опросе В комментариях в исходном коде, поэтому я, наконец, могу закончить и продолжить свою жизнь!

Я жертвую 1 евро (≈ 1,18 долл. США) на исследования рака от имени первых 100 человек, которые его завершают.

Заранее спасибо! ❤ ️

Оригинал: “https://dev.to/chuniversiteit/can-java-and-c-devs-write-better-python-code-than-python-devs-57i6”