![]() 9 / 4 / 0
Регистрация: 12.05.2015
Сообщений: 48
|
|
1 | |
Как понять нормальный у тебя код или нет?16.02.2016, 11:22. Показов 2330. Ответов 26
Метки нет Все метки)
(
Сейчас в процессе изучения C++ столкнулась с тем, что подсматриваю в интернете кто и как выполняет те или иные задачи. Еще ни разу не было такого, чтобы наткнулась на полностью подходящий код. Всегда выкрадываешь только частицу из чужого кода.
Поневоле начинают закрадываться мысли, а правильный ли я пишу код? Как определить правильность кода? Да, код работает, но правильный ли он? Еще больше начинает закрадываться мыслей в направлении, а правильный код у других программистов. Учитывая тот момент, что наталкиваешься на неподходящие варианты кода. Порой явно какой-то неправильный. Мир кодеров не идеален?
0
|
16.02.2016, 11:22 | |
Ответы с готовыми решениями:
26
Надо понять правильно работает код или нет. И работает ли он вообще Как понять - Blu-ray привод или нет? Как понять это бан или нет? и почему? |
![]() ![]() 3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
16.02.2016, 14:41 | 21 |
Ну, мне кажется, что основные критерии - это полное использование средств языка, т.е. работа на максимальном уровне абстракции, красота кода, и ясность и удобочитаемость.
Вот большинство студентов на форуме говорят, что пишут на С++, а сами лабают на Си. Красоту кода я имел в виду в широком смысле, т.е. приемлемость с вашей эстетической точки зрения. И здесь интуиция всегда подскажет. Как говорил Туполев, некрасивый самолет не полетит. Некрасивая программа может быть и скомпилируется, и даже правильно решит задачу, но может в других аспектах быть проблемой. Ну а с ясной и удобочитаемой программой и самому удобнее работать и видеть в ней ошибки, и другим приятнее ее читать.
1
|
![]() 1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
|
|
16.02.2016, 14:50 | 22 |
Если вы можете доказать, что их код неверный или неоптимальный с какими-то доводами - значит этот код неверный/неоптимальный.
Вот в бухгалтерии, для несведующего человека бухгалтерия это горстка чисел, для бухгалтера - каждое число обязано быть в определённой графе. Т.е. любой человек с улицы умеющий считать в столбик, сможет просчитать всю бухгалтерию и привести верные числа, только вот налоговая, не принимает бумажные салфетки с числами, им подавай определённую заполненную форму. Вот разница между проеденным бухгалтером и человеком с улицы в том, что бухгалтер знает, зачем нужна именно эта форма, почему её сделали именно такой, какую задачу она решает. П.С. Я предполагаю, что эти формы у бухгалтеров не с неба взяты, и там на самом деле есть умные люди, которые решают проблемы, а не создают их ![]() Переходя к коду и разговаривая о переменных, и о чужом неверном коде: Нужно быть наверняка уверенным, что чужой код сделан таким, по велению судьбы, а не специально, тогда он без проблем может быть неверным. Например оптимизации: 1) "Ломание" архитектуры, ради избавления от кэшпромахов. 2) Вынос условных переходов из логичного места в не совсем логичное, ради лучшего предсказывания переходов. 3) Использование какой-либо неудобной функции, вместо красивой и удобной, которая опять же может ускорить код. 4) Какие-то архитектурные решения, аля несколько доп. переменных - возможно они существуют ради облегчения будущего расширения кода, если так, то плох он или хорош этот код? Именно знание всяческих нюансов писавшего и отличает хороший код от "плохого", ровно также как и в бухгалтерии, ровно также как и во всех остальных областях. Но в общем случае, всё, что пишется на форумах, очень часто будет неверным, или не самым рациональным, на форумах обычно люди учатся или пишут частенько на отмашку. Всё увиденное нужно понимать и проверять. Последнее также относится к книгам ![]()
1
|
Игогошка!
![]() 1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
16.02.2016, 14:55 | 23 |
Забей, на данном этапе нечего заморачиваться. Пиши код, читай книги, читай чужой код, общайся с шарящими людьми - все параллельно. С получением опыта и знаний будет приходить и понимание.
4
|
![]() 9 / 4 / 0
Регистрация: 12.05.2015
Сообщений: 48
|
|
16.02.2016, 14:56 [ТС] | 24 |
0
|
![]() ![]() 3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
16.02.2016, 15:03 | 25 |
Не согласен. Программирование - это процесс языковый, а значит интуитивный и творческий, так что тут гармония алгеброй не всегда поверяется.
Ну, это как спорить, например, кто правильнее написал стихотворение о любви. Математически вроде не докажешь, но всем как-то понятно, что у Ахматовой лучше получилось, чем у какого-нибудь васи пупкина.
0
|
![]() 1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
|
|
16.02.2016, 15:11 | 26 |
Это да, но это стилистические/душевные/холиварные
![]() ![]() И привёл лишь то, что подталкивает к дополнительному изучению материала.
0
|
260 / 87 / 30
Регистрация: 29.10.2015
Сообщений: 196
|
|
19.02.2016, 18:56 | 27 |
![]() Решение
По существу заданного вопроса.
Код должен соответствовать той ситуации и той проблеме, которую он решает. Попробую по нарастающей перечислить признаки крутизны кода. 1) Код выполняет условия задачи. Уже хорошо. И этого иногда достаточно, если задача сиюминутная и к ней больше никогда и никто не вернется - нужны лишь полученные данные, и все. 2) Код контролирует данные, подсовываемые в задачу, и не сваливается при неправильных данных, да еще и предупреждения пользователю выдает. Еще лучше. 3) Код написан в срок. Это вообще классно, и иногда это самый важный пункт. 4) Код вообще не глючил очень долго, и его не смогла "завалить" целая бригада тестировщиков. Еще лучше. 5) Код написан так, что вы вернулись к нему спустя два года, вам понадобилось что-то в нем доработать. И вы все вспомнили, как и что в нем устроено, и вам не понадобилось заново вникать в его структуру. Еще лучше. 6) Код написан так, что другой программист, которому его передали - разобрался в нем без проблем и смог сам внести в него нужные дополнения, не обрушив что-то другое. Еще лучше. Все, конечно, ИМХО.
2
|
19.02.2016, 18:56 | ||||||
Помогаю со студенческими работами здесь
27
Как по матрице смежности понять изоморфны графы или нет Как понять правильно сверстана форма под мобильники или нет? Как понять, ограничена (сверху/снизу/в целом) последовательность или нет? DVD-RW Asus DRW-24B1S1T SATA Black RTL. Нормальный привод или нет? Понять, разноцветное изображение или нет Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Простая нейросеть на КуМир: Создание и обучение
EggHead 16.03.2025
Искусственные нейронные сети — удивительная технология, позволяющая компьютерам имитировать работу человеческого мозга. Если вы хотя бы немного интересуетесь современными технологиями, то наверняка. . .
|
Исполнитель Кузнечик в КуМир: Решение задач
EggHead 16.03.2025
Среди множества исполнителей в системе КуМир особое место занимает Кузнечик — простой, но невероятно полезный виртуальный персонаж, который перемещается по числовой прямой, выполняя ваши команды. На. . .
|
Исполнитель Водолей в КуМир: Решение задач
EggHead 16.03.2025
Разработка алгоритмического мышления — одна из ключевых задач для начинающих программистов, и система КуМир предлагает отличный способ погрузиться в этот процесс. Среди множества исполнителей в этой. . .
|
Исполнитель Чертежник в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы можете рисовать на бесконечной координатной плоскости, перемещая точку, которая оставляет след. По вашей команде она может поднять перо и двигаться, не оставляя следа, или. . .
|
Исполнитель Робот в КуМир: Решение задач
EggHead 16.03.2025
КуМир (Комплект Учебных МИРов) — это учебная среда программирования, разработанная специально для обучения базовым концепциям алгоритмизации. Её главная фишка — использование русскоязычного. . .
|
Исполнитель Черепаха в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы впервые учитесь программировать, а перед вами стоит задача заставить маленькую виртуальную черепашку рисовать на экране. Звучит забавно? Эта идея зародилась ещё в 1967 году, когда. . .
|
Конвейеры данных с Apache Kafka
Javaican 16.03.2025
В мире, где данные стали новой нефтью, Apache Kafka зарекомендовал себя как мощный инструмент для построения надежных и масштабируемых конвейеров данных. Созданный изначально командой LinkedIn в 2011. . .
|
Deno против Node.js: Будущее JavaScript рантайма
run.dev 16.03.2025
За последнее десятилетие Node. js стал абсолютным лидером среди JavaScript-рантаймов и фактическим стандартом для серверной разработки на JavaScript. Но в 2018 году тот же разработчик, который создал. . .
|
SwiftUI или UIKit - что выбрать для нового приложения iOS?
mobDevWorks 16.03.2025
Когда Apple представила SwiftUI на WWDC 2019, многим показалось, что дни UIKit сочтены. Новый декларативный фреймворк предлагал радикально иной подход к разработке интерфейсов. Вместо кропотливого. . .
|
Docker: Руководство для начинающих по созданию первого приложения
Mr. Docker 16.03.2025
Docker — это платформа, которая упаковывает ваше приложение и все его зависимости в стандартизированные блоки, называемые контейнерами. Эти контейнеры изолированы друг от друга и от основной системы,. . .
|