Нейросеть пишущая код – это решение, которое значительно упрощает процесс создания сайтов и приложений. Теперь разработка может быть более быстрой и эффективной с нейросетью для программирования. Нейросеть позволяет писать код без особых трудностей, например, она создаёт код на Python, PHP, JavaScript. Для тех, кто только начинает программировать, нейросеть для написания кода – настоящий помощник, которой можно доверять. Создавайте проекты без лишних затрат времени и сил благодаря нейросети, которая пишет код онлайн.
Попробовать нейросеть в деле онлайн бесплатно:
Ошибка!
Примеры работ нейросети из раздела код
Напишите функцию, выдающую индексы близких элементов заданных массивов, а именно тех пар элементов, чей модуль разницы не превосходит заданного значения. важно: не tuple, а одномерный массив типа numpy.ndarray то есть .ndim от него равно 1
«`pythonimport numpy as npdef close_indices(a, b, value): diffs = np. abs(np. subtract. outer(a, b)) row_idxs, col_idxs = np. where(diffs
10 обязательных правил для начинающего программиста или как писать код, за который не стыдно?
6 мин. 32 сек.
Создать игру: С основным персонажем; Реализовать управление по клавишам; Iипы, при столкновении с которыми из основного спрайта вылетают 5 доп. спрайтов для сбора
«`pythonimport pygameimport random# задаем размеры окнаwin_width = 800win_height = 600# класс для основного персонажаclass MainSprite(pygame. sprite. Sprite): def __init__(self.
7 мин. 26 сек.
Пользователь вводит строку, в которой между элементами стоит 1 пробел. С помощью метода split() программа создает список. Напиши функцию сортировки, которая будет выводить сначала четные элементы, а потом нечетные в списке.
«`python# Считываем строкуuser_string = input(«Введите строку: «)# Создаем список с помощью метода split()my_list = user_string. split()# Создаем функцию для сортировки спискаdef.
11 мин. 55 сек.
Ссылка на датасет: https://raw.githubusercontent.com/AdiPersonalWorks/Random/master/student_scores%20-%20student_scores.csv Вам необходимо проанализировать данные об успеваемости студентов, на основе которых можно предсказать их оценки на экзамене. Используя логистическую регрессию, определите вероятность того, что студент, который провел 9 часов в неделю на подготовку, получит оценку 85% и выше на экзамене. import pandas as pd import numpy as np from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt # загрузка данных data = pd.read_csv(‘https://raw.githubusercontent.com/AdiPersonalWorks/Random/master/student_scores%20-%20student_scores.csv’) # подготовка данных X = data[‘Hours’].values.reshape(-1, 1) y = np.where(data[‘Scores’] >= 85, 1, 0) #Ваш код
# разбиение на тренировочный и тестовый наборы данныхX_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)# создание модели и обучение на тренировочных данныхmo.
12 мин. 20 сек.
Писать код это не программирование
Ссылка на датасет: https://raw.githubusercontent.com/AdiPersonalWorks/Random/master/student_scores%20-%20student_scores.csv Вам необходимо проанализировать данные об успеваемости студентов, на основе которых можно предсказать их оценки на экзамене. Используя логистическую регрессию, определите вероятность того, что студент, который провел 9 часов в неделю на подготовку, получит оценку 85% и выше на экзамене. import pandas as pd import numpy as np from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt # загрузка данных data = pd.read_csv(‘https://raw.githubusercontent.com/AdiPersonalWorks/Random/master/student_scores%20-%20student_scores.csv’) # подготовка данных X = data[‘Hours’].values.reshape(-1, 1) y = np.where(data[‘Scores’] >= 85, 1, 0) #Ваш код
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0. 2, random_state=42) model = LogisticRegression() model. fit(X_train, y_train) prediction = model. predict(np.
12 мин. 43 сек.
Пользователь вводит строку, в которой между элементами стоит 1 пробел. С помощью метода split() программа создает список. Список должен быть отсортирован по убыванию. Напиши программу, которая определяет сколько различных элементов в списке. В результате программа выводит только количество разных элементов.
«`pythonstring = input(«Enter a string with elements separated by spaces: «)lst = string. split() # split string using space as separatorlst. sort(reverse=True) # sort list in des.
13 мин. 1 сек.
В магазине игрушек товары хранятся в виде списка. toys_list = [‘конструктор лего’, ‘плюшевый медведь’] Напиши программу, которая запрашивает количество новых элементов элементов, а потом сами элементы. В конец списка добавляется наименование товара. В результате работы программа выводит список, который отсортирован по длине наименования товара.
«`pythontoys_list = [‘конструктор лего’, ‘плюшевый медведь’]n = int(input(«Введите количество новых элементов: «))for i in range(n): new_toy = input(«Введите наименование новог.
13 мин. 34 сек.
В программе задан кортеж со списками. Напиши функцию, которая вычисляет сумму элементов вложенных списков, а потом сортирует по убыванию. lst = ([12, 45], [5, 78], [1, 87])
«`pythonlst = ([12, 45], [5, 78], [1, 87])def sum_sort_tuples(tuples): sums = [] for tup in tuples: sum_tup = sum(tup) sums. append(sum_tup) sorted_sums = s.
13 мин. 47 сек.
В магазине игрушек товары хранятся в виде списка. toys_list = [‘конструктор лего’, ‘плюшевый медведь’] Напиши программу, которая запрашивает количество новых элементов элементов, а потом сами элементы. В конец списка добавляется наименование товара. В результате работы программа выводит список, который отсортирован по длине наименования товара.
«`pythontoys_list = [‘конструктор лего’, ‘плюшевый медведь’]n = int(input(«Введите количество новых товаров: «))for i in range(n): new_toy = input(«Введите наименование нового то.
14 мин. 27 сек.
Удалить панель навигации
Извините, я не могу выполнить данную задачу, так как SQL — язык управления реляционными базами данных, а панель навигации — это элемент веб-интерфейса. Если у вас есть более точно.
15 мин. 27 сек.
«`vbnet > (>%). «`Ошибки:- квадратные скобки вместо круглых при обращении к элементам массива- использование фигурных скобок.
16 мин. 10 сек.
Отчёт по остаткам на складе
«`sqlSELECT ProductName, UnitsInStock, UnitsOnOrder, ReorderLevelFROM ProductsWHERE UnitsInStock
16 мин. 18 сек.
17 мин. 51 сек.
Найти серийный номер товара
«`sqlSELECT serial_numberFROM productsWHERE name = ‘товар’;«`Результат:| serial_number || ————- || 123456789 |
18 мин. 19 сек.
> (>%). Отражает интегральное (общее) эмоциональное отношение к ребенку, его позитивный полюс. Родителю нравится ребенок таким, какой он есть. Родитель уважает индивидуальность ребенка, симпатизирует ему. Родитель стремится проводить много времени вместе с ребенком, одобряет его интересы и планы.
«`vbnet > (>%). Отражает интегральное (общее) эмоциональное отношение к ребенку, его позитивный полюс. Родителю нравится ребе.
18 мин. 28 сек.
Def get_season_by_month_number(month_number): m = int(input(‘Месяц: ‘)) if m == 12 or m == 1 or m == 2: print(‘winter’) elif m == 3 or m == 4 or m == 5: print(‘spring’) elif m == 6 or m == 7 or m == 8: print(‘summer’) elif m == 9 or m == 10 or m == 11: print(‘autumn’) elif m == 0 or m > 12: print (‘winter!’)
«`pythondef get_season_by_month_number(month_number): # здесь не нужно запрашивать месяц, так как его значение передается в функцию в качестве аргумента if month_number == 1.
25 мин. 16 сек.
Ахтанизовская
К сожалению, я не могу выполнить данную задачу, поскольку не имею доступа к сети Интернет для поиска необходимых данных о Ахтанизовской. Однако, могу продемонстрировать пример нап.
27 мин. 46 сек.
Напиши функцию, меняющую каждое третье значение массива целых чисел на заданное число без циклов for, while и оператора if
«`pythondef change_third_elem(arr, num): arr[2::3] = [num] * len(arr[2::3]) return arr«`Функция `change_third_elem` принимает два аргумента: `arr` — массив целых чисел, и `.
29 мин. 26 сек.
Напиши функцию, меняющую каждое третье (начиная с 0) значение массива целых чисел на заданное число
«`pythondef change_every_third_element(arr, num): for i in range(0, len(arr), 3): arr[i] = num return arr«`Функция `change_every_third_element` принимает в качестве.
31 мин. 22 сек.
Сайт для универа
Университет Университет Главная О нас Факультеты Контакты Добро пожаловать в наш университет! Мы предлагаем.
58 мин. 55 сек.
Нужно проверить, где и когда совершали самые крупные покупки. Из таблицы invoice выгрузите поле billing_address, которое хранит адрес выставления счёта, и поле invoice_date с датой покупки. Дата указана в формате ‘YYYY-MM-DD HH:MM:SS’, нужно оставить только часть ‘YYYY-MM-DD’. Отфильтруйте записи, в которых значение поля total больше или равно 8.
«`sqlSELECT billing_address, DATE(invoice_date) as purchase_dateFROM invoiceWHERE total >= 8;«`
1 ч. 12 сек.
Script.Parent.MouseButton1Click:Connect(function() script.Parent:Destroy() wait(2) workspace.InvisiblePart.Transparency = 1 script.Parent.Sound.Playing = true end)
«`luaScript. Parent. MouseButton1Click:Connect(function() script. Parent:Destroy() wait(2) workspace. InvisiblePart. Transparency = 1 script. Parent.
Sound:Play()end)`.
1 ч. 3 мин. 48 сек.
Напиши код для калькулятора
«`python# функции для калькулятораdef add(x, y): return x + ydef subtract(x, y): return x — ydef multiply(x, y): return x * ydef divide(x, y): if y == 0: raise.
1 ч. 15 мин. 23 сек.
Даны сведения. Составить программу, которая использует двумерные динамические массивы для работы с этими сведениями. Заполнить массивы данными и вывести их на экран в виде таблицы. Сведения: название продовольственного товара, город-производитель, вес, стоимость. Условие: Кызыл.
Итоговая строка: средний вес.
1 ч. 17 мин. 1 сек.
Мне надо сделать так что бы когда игрок заходил в игру у него был ативирован сразу shift lock и нельзя был его убрать в роблокс студио
«`lua— Активация Shift Lockgame:GetService(‘StarterPlayer’). MouseBehavior = Enum. MouseBehavior. LockCenter«`Чтобы игрок не мог отключить Shift Lock через Roblox Studio, необхо.
1 ч. 22 мин. 16 сек.
Написать программу, в которой описан статический метод max, вычисляющий максимальное из двух вещественных чисел a, bи статистический метод h, вычисляющий по двум вещественным числа aи bзначение выражения h(a,b)=a/(1+b^2 )+b/(1+a^2 )-(a-b)^3. Используя эти методы для заданных действительных чисел s и t вычислить h(s,t)+max(h^2 (s-t,st),h^4 (s-t,s+t) )+h(1,1).
«`csharpusing System;class Program < static double max(double a, double b) < return a >b ? a : b; > static double h(double a, double b) < return a / (1 + M.
1 ч. 30 мин. 19 сек.
Создать класс для взаимодействия с таблицей в postgresql
«`csharpusing Npgsql; // добавление библиотеки Npgsql для работы с PostgreSQLpublic class PostgresqlTable< private readonly string connectionString; // строка подключения к баз.
1 ч. 34 мин. 30 сек.
**Python код для создания Telegram бота BTCBANKER:** «`import telegramfrom telegram. ext import Updater, CommandHandler, MessageHandler, Filtersimport logging# инициализация логге.
1 ч. 32 мин. 34 сек.
Нейросеть пишущая и генерирующая код: новая эра программирования
Современный мир технологий не стоит на месте. Программное обеспечение уже давно стало неотъемлемой частью жизни человека. Многие десятилетия были потрачены на разработку инструментов и языков программирования, однако часто возникали нестандартные задачи, на которые разработчик не мог найти ответа. Ну, а если ответ все же находился, то его реализация занимала много времени и сил.
В последнее время, то, что было немыслимым раньше, смогли реализовать благодаря искусственному интеллекту. Нейросеть, которая может писать код, стала явлением новой эры программирования.
Нейросеть для кода онлайн: как просто и эффективно оптимизировать программирование
Нейросеть код, или как ее часто называют – нейросеть для написания кода, представляет собой искусственную нейронную сеть, которая используется для генерации кода. То есть она анализирует определенные примеры и вырабатывает умение решения сходных задач.
С помощью нейронных сетей можно создавать различные программы, в том числе и игры. Среди преимуществ такого подхода можно выделить:
- Краткие сроки разработки, так как многие процессы автоматизированы;
- Точность и высокая скорость генерации кода;
- Повышение качества продукта, так как алгоритм нейросетей базируется на анализе больших массивов данных;
- Возможность сократить расходы на персонал, так как не требуется наличие большого количества людей, обладающих высокими навыками программирования.
Как работает нейросеть для написания кода
Принцип работы нейросети для написания кода основан на анализе большого объема данных и построении моделей генерации кода. Нейросеть обучается на некотором наборе примеров, состоящих из реального программного кода.
Обычно нейронная сеть обучается на таких языках, как C++, Python, Java, JavaScript, Ruby, HTML/CSS и других. Обучение нейросети для генерации конкретного языка происходит с помощью специальных алгоритмов, учитывающих специфику каждого языка программирования.
Как правило, данные входят в нейросеть в виде текстовых файлов или ссылок на открытые исходные коды программ в онлайн режиме. Нейросеть анализирует синтаксис и контекст исходного кода и извлекает из него общие закономерности и шаблоны кода для дальнейшей генерации.
Нейросеть пишущая код – новое решение проблем
Нейросети, которая пишет код онлайн – это революционный шаг в направлении развития программного обеспечения. В области разработки программного обеспечения выделяется множество задач, которые можно решить с помощью нейросетей.
Где применяется нейросеть для создания кода
В эпоху большого количества программ на рынке, многие из которых предлагают похожие функции, нейросеть для кода, способная генерировать уникальный код, может представлять собой лучшее решение.
Создание десктопных или мобильных приложений
Генерирующая код нейросеть может использоваться для создания десктопных или мобильных приложений. Одна из главных преимуществ состоит в том, что нейросеть добавляет к высокому качеству программного кода скорость его создания. Вы можете сконцентрироваться на более важных задачах, таких как тестирование и оптимизация приложения.
Оптимизация кода
Одна из основных функций нейросети может заключаться в оптимизации исходного кода. Нейросеть будет искать в коде подходы к более оптимальному решению и будет проводить оптимизацию, в зависимости от параметров, задаваемых пользователем.
Исправление ошибок в коде
С помощью нейросетей можно просмотреть сгенерированный код для обнаружения ошибок. Нейросеть может проследить, к каким ошибкам были приведены программы, какими именно параметрами нужно управлять при копировании чужого кода.
Конечно, нейросети далеко не идеальны и обладают недостатками, но это не делает их менее важными в настоящее время. Они уже используются в таких направлениях, как поисковые системы, транспорт, здравоохранение и тонкость машинного обучения. Нейросети для кода – это новый инструмент в программной инженерии, который предлагает новые возможности программистам в различных областях. Использование нейросетей для генерации кода позволяет облегчить рабочие задачи, сделать программирование проще и более эффективным.
Источник: aisearch.ru
5 советов по быстрому написанию кода на любом языке программирования
Выполнение любой задачи в программировании включает в себя нескольких общих этапов:
- понимание;
- планирование;
- написание кода;
- тестирование/отладка;
- завершение работы.
Программисты тратят большую часть времени на написание кода и отладку, потому что обычно занимаются планированием во время создания кода. Поэтому каждый разработчик стремится воспользоваться специальными советами по увеличению скорости кодирования. Так, некоторые используют редакторы кода, автоматически генерирующие часто используемые фрагменты.
Взяв на вооружение решения по увеличению продуктивности, вы можете ускорить выполнение повторяющихся действий. Как правило, написание кода — это динамичная работа. Ведь, скажем, вы же не пишете сегодня снова тот же код, который писали вчера. А если вы так делаете, то вам, вероятно, следует изучить принципы шаблонов проектирования.
Чтобы увеличить скорость написания кода, нужно знать факты, влияющие на этот процесс. Один программист может написать код для ПО за час, в то время как его коллеге удастся выполнить ту же работу всего за пять минут и сохранить то же качество на выходе.
В этой статье мы дадим несколько советов, которые помогут увеличить скорость написания кода и сохранить его качество. Вы сможете применять эти советы на практике с любым языком программирования, фреймворком и библиотекой.
По возможности применяйте метапрограммирование
Обычно для хранения наборов данных используются сложные типы данных. Например, если нужно хранить и обрабатывать данные о человеке, мы не передаем и не обрабатываем отдельные переменные, такие как имя, возраст, страна проживания и т. д. Вместо этого мы создаем один класс — объект “ключ-значение” — или структуру в соответствии с используемым языком.
Предположим, что вам нужно сгенерировать SQL-запрос с объектом под названием person . Некоторые выбирают долгий путь, обращаясь к каждой базовой переменной по имени ключа:
person.name, person.age, person.country
Если вам нужно добавить еще одно поле SQL, придется изменить функцию генератора SQL-запросов. По мере увеличения количества полей может потребоваться много времени для явного ввода имен полей.
Но если относиться к person как к данным и извлекать всю информацию (поля и значения), необходимую для генерации SQL-запроса во время выполнения программы, можно быстро написать высокодинамичный код. Эта техника называется “метапрограммирование”, и при работе с большинством популярных языков вы можете применять ее с помощью Reflection API.
Прежде чем использовать имена полей конкретной структуры в явном виде, попробуйте мыслить как специалист в сфере метапрограммирования. Эта техника сэкономит много времени при работе с сериализацией и преобразованием данных. Однако чрезмерное использование метапрограммирования может снизить читаемость кода, а также замедлить работу программы. Так что используйте эту технику с осторожностью.
Пишите готовый к коммитам код с первой попытки
Большинство программистов стремятся прежде всего реализовать быстрое решение. После этого они часто проводят перепроектирование кода для его очистки. Кроме того, иногда требуется быстрый рефакторинг, чтобы подготовить код для повторного использования.
Между тем, есть разработчики, которые всегда стремятся реализовать чистый и многократно используемый код с первой попытки. Если вы сначала реализуете быстрое решение, вы можете оперативно проверить, работает код целиком или нет.
Однако если вы начнете терпеливо писать многократно используемый и готовый к коммитам код, вы сэкономите массу времени, которое могли бы потратить на рефакторинг. Привыкнуть к такой практике будет нелегко. К тому же иногда быстрая реализация помогает проверить техническую осуществимость проекта.
Тем не менее, если вы начнете практиковать внедрение многократно используемого, чистого и готового к коммитам кода с первой попытки, то сможете быстрее выполнять задачи, сохраняя при этом качество работы.
Изучайте новейшие возможности языка, но используйте их с осторожностью
Каждый популярный язык программирования периодически обновляется. Вместе с новыми версиями появляется новый инструментарий, улучшается структура языка и совершенствуется стандартный API. Помимо этого, из языка могут исключаться некоторые существующие функции.
Подобные изменения часто затрагивают функции, ускоряющие написание кода. Так, работа с большими многострочными строками в JavaScript с обычным строковым синтаксисом (с одинарными или двойными кавычками) занимает много времени, поскольку необходимо добавлять множество операторов конкатенации строк. Но с новыми шаблонными литералами ES6 вы можете выполнять манипулирования строками любой сложности.
Точно так же и в любом языке программирования могут появиться функции, способные повысить скорость работы. Чтобы быстрее узнавать о новых возможностях, просматривайте историю версий языка, а также читайте сообщения в блогах и репозиториях с открытым исходным кодом. Тажк учтите, что в стандартной библиотеке языка уже может быть заложена часть кода, который вы пытались реализовать с нуля.
Старайтесь не переусердствовать при разработке
Ведущие инженеры мотивируют команду писать чистый код, ориентируясь на лучшие шаблоны проектирования. Но если добавлять все шаблоны в каждый фрагмент, то код усложнится настолько, что к нему никто не захочет прикасаться.
Есть два способа писать код:
- Одни пишут его только для компилятора/интерпретатора без использования каких-либо шаблонов.
- Другие пишут слишком сложный код, чтобы показать, что они знают все шаблоны проектирования.
Разумеется, программисту нужно уметь находить баланс между этими двумя крайностями, чтобы создавать качественный и читабельный код.
Рефакторить код с малым количеством шаблонов проектирования легко. Гораздо труднее производить рефакторинг огромной перегруженной кодовой базы. Поэтому старайтесь реализовать чистый код, используя только релевантные шаблоны проектирования. Это сэкономит время вам и вашим коллегам.
Старайтесь также не переусердствовать с интеграцией библиотек, которые вам не нужны. Например, нет необходимости интегрировать сторонние решения по управлению состояниями для простого приложения на React.
Учитесь быстро печатать на клавиатуре
До этого мы приводили советы, касающиеся перестройки вашего мышления как программиста. Теперь поговорим о физических способностях, которые могут прямо повлиять на скорость. Любой код, помимо присущего ему логического значения, представляет собой текстовый документ, набранный с помощью клавиатуры. Следовательно, скорость набора текста сильно влияет на скорость написания код. Но для того, чтобы быстро писать код, не обязательно быть сверходаренным наборщиком, печатающим 100 слов в минуту.
Программисты используют клавиатуру по-разному. Некоторые набирают исходный код в виде последовательности символов. Другими словами, они вводят слова и специальные символы один за другим в правильном порядке. Между тем, другие практикуют собственные способы ввода кода, оказывающиеся на деле довольно продуктивными.
Есть программисты, использующие в редакторах расширения для автоматического закрытия скобок и расширения для автозаполнения с поддержкой искусственного интеллекта. С другой стороны, некоторые разработчики любят работать по старинке, без всяких расширений для автозаполнения. Вы должны найти свой способ, который окажется для вас максимально комфортным.
Если программист вместо указателя мыши использует клавиши со стрелками для перемещения между строками кода, у него меньше времени уходит на его написание. Вам тоже следует изобрести собственные “лайфхаки” для быстрого управления клавиатурой при наборе кода.
- 8 советов по улучшению качества кода
- Всё, что должен знать разработчик ПО о качестве кода
- 6 ответов на вопрос: «почему читать код важнее, чем писать?»
Источник: nuancesprog.ru
Как писать красивый и читаемый код? [закрыт]
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.
Закрыт 6 месяцев назад .
- Максимальное сокращение кода. Бывает желания максимально сократить код, но появляются сомнения, не перебор ли это. Ведь можно было бы отдельно объявить переменную и ей уже присвоить выражение, которое без переменной не сразу понятно что делает.
- Именование переменных. Проблемы с выбором имени для переменной. Если описывать полностью, что она делает, то будет около 16 символов, а если сокращать, то может конфликтовать с пониманием других переменных. Контекст тоже не всегда спасает.
- Разделение действий. Слишком много всего в одной части кода, что может усложнить понимание. С одной стороны можно было бы вынести в отдельные функции, а с другой стороны нет смысла, так как используются только в той части кода.
- Уместность комментариев. Свой код всегда понятен, а предположить как его понимают другие, будет не всегда объективно. Так что, не всегда очевидно, нужен комментарий или он будет избыточен.
- Форматирование. С большой или маленькой буквы начинать переменную, а также в пределах переменной нужно ли большими буквами начинать слова или же разделять их с помощью «_». Делать ли пустую строку между if и другими блоками, а также между переменными и этими блоками или же расставлять по действиям. Делать ли отступы внутри выражений, к примеру if( sometring ) или if(sometring). 6.
Эти пункты только для понимания проблемы, потому что многие забыл, а многие и не замечал, думаю. А также на эти пункты с одной стороны очень легко ответить, а с другой хотелось бы правил или детального разбора. Так вот, есть ли правила гласные/негласные, в которых бы описывалось это и многое другое в этом направлении? Или есть книги посвященные этой теме?
Отслеживать
121k 24 24 золотых знака 121 121 серебряный знак 291 291 бронзовый знак
задан 14 апр 2015 в 17:27
1,808 2 2 золотых знака 20 20 серебряных знаков 25 25 бронзовых знаков
Я вам рекомендую к обязательному прочтению «Совершенный код» goo.gl/jiEHE1 и «Чистый код» goo.gl/rtF5wD
14 апр 2015 в 18:26
И продолжение «Чистого кода», которое называется «Идеальный программист» goo.gl/yD6VJb
14 апр 2015 в 18:53
15 апр 2015 в 14:21
15 апр 2015 в 14:41
7 ответов 7
Сортировка: Сброс на вариант по умолчанию
Вопрос стиля — на самом деле очень серьёзный вопрос.
Не забывайте, что код пишется вами не для компилятора. Сделать, чтобы было понятно компилятору просто, но ваша цель сложнее: сделать так, чтобы было понятно человеку.
Код программы — то же самое литературное произведение. Вы должны донести мысль читателю, причём этим читателем можете оказаться как вы сами через полгода, так и ваш коллега, которому придётся править код пока вы в отпуске.
Хороший код живёт долго, а значит, он будет прочитан, подправлен, понят и объяснён много раз. Понимание чужого кода гораздо сложнее, чем написание нового с нуля, поэтому инвестировать в понятность кода важно (если, конечно, вы желаете своему коду долгой счастливой жизни).
Сокращение кода не нужно. Код должен быть понятным, не больше и не меньше.
Если вам кажется, что где-то нужно расписать для наглядности — так и сделайте, даже пусть придётся вводить дополнительные переменные только чтобы дать имя промежуточному результату. Если, наоборот, вам кажется, что кода слишком много для той простой штуки, которую он делает — вынесите эту штуку в отдельную функцию и придумайте ей правильное название, чтобы пояснить смысл действия. Поддерживайте однородность и общий темп: если кусок кода запускает космическую ракету в полёт, то кусок кода рядом с ним, который читает данные из конфигурационного файла, смотрится нелепо.
Именование переменных и функций. Не жалейте букв! Байты на винчестере подешевели. Вы не должны писать комментарии, чтобы пояснить смысл переменной, иначе читатель должен видеть одно (имя переменной), а в уме держать другое (её смысл). С другой стороны, не надоедайте читателю излишними подробностями. То, что у вас не просто acceptableByteCount , а countOfBytesWhichDidNotPassAtLeastTwoFilters , — скучно.
Соблюдайте разумный баланс. Если вам нужна переменная цикла, назовите её i или j , это стандартная практика. Придерживайтесь общепринятых соглашений, если нужно, придумывайте свои (но разумные!), легко понятные другим.
Именуйте переменные правильно. Название должно отображать смысл. Если вы используете одну и ту же переменную в двух разных смыслах, вы делаете неправильно, разделите её на две переменные с однозначным смыслом. Например, не стоит совмещать длину переданной строки и счётчик оставшихся символов для обработки, хотя начальное значение счётчика и совпадает с длиной строки.
Старайтесь, чтобы текст читался естественно. Например, имя действия должно бы быть глаголом (не vector.Normalization() , а vector.Normalize() или vector.GetNormal() ). Имя булевого условия должно быть похоже на условие и скорее всего начинаться с is , has и тому подобного. (Например: hasChanges() , isPrime() и т. п.) Ради бога, используйте английские имена, а не русские транслитом! Поверьте, isZarplataComputed() смотрится ужасно. Исключение — языки с кириллическим синтаксисом (1с?) или общепринятый стиль команды.
Разделение действий. Да, имеет смысл отделять код в функцию только для того, чтобы правильно назвать этот фрагмент кода. Функции существуют не для повторного использования! Функции нужны для логического разбиения кода на части.
Если вы видите, что ваша функция ответственна за разные вещи, и вы не можете придумать ей короткого точного названия, значит, ваша функция делает чересчур много, и её надо разделить. Часто из супердлинной функции в 500 строк получается десяток классов. И это хорошо.
И да, читателю гораздо лучше понять функцию, которая делает одну простую задачу. Если функция делает слишком много, у неё кроме более сложного кода более сложные пред- и постусловия (а значит, её ещё сложнее понять).
Для хорошего разбиения на части проектируйте сверху вниз. Пример: приготовить еду — это что? Решаем, что это значит приготовить французский завтрак. Окей, а что такое приготовить французский завтрак? Это купить круассаны и сварить кофе.
А что такое сварить кофе? Это смолоть зёрна в кофемолке, засыпать в турку, добавить воды, поместить на огонь, и т. д. Это естественным образом оформляется в процедуры CookMeals , CookFrenchBreakfast , BuyCroissants , MakeCoffee . Ничего выдумывать не пришлось.
Уместность комментариев. Старайтесь писать код так, чтобы комментарии не были нужны. Очень часто комментарии избыточны; очень часто они устаревают и перестают отображать действительность. Люди часто меняют логику кода, но забывают пробежаться и по комментариям.
Не забывайте, что выполняется код, а не комментарии. Поэтому ошибочный, вводящий в заблуждение комментарий (например: /* здесь не может получиться NULL */ ) гораздо хуже его отсутствия. Если у вас есть кусок кода, снабжённый комментарием, объясняющим, что он делает, превратите этот код в функцию, а комментарий — в её имя. Полностью избежать комментариев, вероятно, не удастся, но постарайтесь, чтобы комментарии описывали, почему вы делаете так, как делаете, а что именно вы делаете, должно быть понятно из кода.
Форматирование. Плохое форматирование очень сильно влияет на читаемость кода. Выработайте стиль и придерживайтесь его. Какой именно стиль вы выберете, в общем-то и не важно, главное, чтобы он был логичен и последователен. (Например, если вы ставите пробел после while , наверное стоит ставить пробел и после if .) Старайтесь, тем не менее, не отступать от общепринятых соглашений (например, имена методов в Java принято выбирать в lowerCamelCase), иначе вам трудно будет читать чужой код.
Если вы работаете в команде, не нарушайте общий стиль, даже если вам персонально он не нравится. Если в команде нету общепринятого стиля, предложите его! Расстановка скобок, отступы, пробелы, максимальная длина строк и всё такое важны, чтобы читатель не отвлекался. Непоследовательное форматирование сбивает с толку и отвлекает гораздо больше, чем это кажется — точно так же, как неправильная пунктуация мешает правильно понимать текст литературного произведения.
И последнее. Не заботьтесь о повышении эффективности кода путём понижения его читаемости. Выделение отдельного метода — не проблема, современные компиляторы научились inline-ить всё, что нужно. И объединять разные переменные в один регистр они скорее всего умеют гораздо лучше вас. Если же в каком-то месте ради низкоуровневой оптимизации действительно нужно ухудшить читаемость, снабдите этот фрагмент достаточными комментариями по поводу того, что же происходит в коде, и самое главное — почему такой трюк понадобился.
Источник: ru.stackoverflow.com