Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для IrinaNovikova
9 / 4 / 0
Регистрация: 12.05.2015
Сообщений: 48
1

Как понять нормальный у тебя код или нет?

16.02.2016, 11:22. Показов 2330. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сейчас в процессе изучения C++ столкнулась с тем, что подсматриваю в интернете кто и как выполняет те или иные задачи. Еще ни разу не было такого, чтобы наткнулась на полностью подходящий код. Всегда выкрадываешь только частицу из чужого кода.
Поневоле начинают закрадываться мысли, а правильный ли я пишу код? Как определить правильность кода? Да, код работает, но правильный ли он?
Еще больше начинает закрадываться мыслей в направлении, а правильный код у других программистов. Учитывая тот момент, что наталкиваешься на неподходящие варианты кода. Порой явно какой-то неправильный.
Мир кодеров не идеален?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2016, 11:22
Ответы с готовыми решениями:

Надо понять правильно работает код или нет. И работает ли он вообще
Он должен вычислить сумму с точностью эпсилон #include <iostream> using namespace std; int main() {

Как понять - Blu-ray привод или нет?
Всем привет. Как понять блу рей привод или нет. matshita dvd-ram uj8e1

Как понять это бан или нет? и почему?
Есть у меня блог filatoff.org. Пишу временами и все сам, ни какого сдиралова. По началу индексировался медленно, но верно. А теперь судя...

26
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
16.02.2016, 14:41 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от IrinaNovikova Посмотреть сообщение
Как вот понять правильно ты сделал или нет?
Ну, мне кажется, что основные критерии - это полное использование средств языка, т.е. работа на максимальном уровне абстракции, красота кода, и ясность и удобочитаемость.
Вот большинство студентов на форуме говорят, что пишут на С++, а сами лабают на Си.
Красоту кода я имел в виду в широком смысле, т.е. приемлемость с вашей эстетической точки зрения. И здесь интуиция всегда подскажет. Как говорил Туполев, некрасивый самолет не полетит. Некрасивая программа может быть и скомпилируется, и даже правильно решит задачу, но может в других аспектах быть проблемой.
Ну а с ясной и удобочитаемой программой и самому удобнее работать и видеть в ней ошибки, и другим приятнее ее читать.
1
 Аватар для Nosey
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
16.02.2016, 14:50 22
Цитата Сообщение от IrinaNovikova Посмотреть сообщение
Ну знаете вот в бухгалтерии все схемы работы отлажены. Если у компании по результатам квартала остается прибыль, то ее можно перевести только инвестору или в резервный фонд, но никак не списать с баланса и успокоится. В программировании можно решить задачу к примеру добавив одну переменную, а можно добавить четыре переменные и решить такую же задачу. Как вот понять правильно ты сделал или нет?
Я вот когда смотрю чужие коды, то мне кажется, что у других неправильно. Потом у меня возникают мысли, что ведь я начинающий в этом деле и как я могу судить других на правильность кода?
Если вы можете доказать, что их код неверный или неоптимальный с какими-то доводами - значит этот код неверный/неоптимальный.

Вот в бухгалтерии, для несведующего человека бухгалтерия это горстка чисел, для бухгалтера - каждое число обязано быть в определённой графе. Т.е. любой человек с улицы умеющий считать в столбик, сможет просчитать всю бухгалтерию и привести верные числа, только вот налоговая, не принимает бумажные салфетки с числами, им подавай определённую заполненную форму. Вот разница между проеденным бухгалтером и человеком с улицы в том, что бухгалтер знает, зачем нужна именно эта форма, почему её сделали именно такой, какую задачу она решает.
П.С. Я предполагаю, что эти формы у бухгалтеров не с неба взяты, и там на самом деле есть умные люди, которые решают проблемы, а не создают их

Переходя к коду и разговаривая о переменных, и о чужом неверном коде:
Нужно быть наверняка уверенным, что чужой код сделан таким, по велению судьбы, а не специально, тогда он без проблем может быть неверным.
Например оптимизации:
1) "Ломание" архитектуры, ради избавления от кэшпромахов.
2) Вынос условных переходов из логичного места в не совсем логичное, ради лучшего предсказывания переходов.
3) Использование какой-либо неудобной функции, вместо красивой и удобной, которая опять же может ускорить код.
4) Какие-то архитектурные решения, аля несколько доп. переменных - возможно они существуют ради облегчения будущего расширения кода, если так, то плох он или хорош этот код?

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

Но в общем случае, всё, что пишется на форумах, очень часто будет неверным, или не самым рациональным, на форумах обычно люди учатся или пишут частенько на отмашку. Всё увиденное нужно понимать и проверять. Последнее также относится к книгам
1
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
16.02.2016, 14:55 23
Цитата Сообщение от IrinaNovikova Посмотреть сообщение
Поневоле начинают закрадываться мысли, а правильный ли я пишу код?
Забей, на данном этапе нечего заморачиваться. Пиши код, читай книги, читай чужой код, общайся с шарящими людьми - все параллельно. С получением опыта и знаний будет приходить и понимание.
4
 Аватар для IrinaNovikova
9 / 4 / 0
Регистрация: 12.05.2015
Сообщений: 48
16.02.2016, 14:56  [ТС] 24
Цитата Сообщение от Nosey Посмотреть сообщение
всё, что пишется на форумах, очень часто будет неверным, или не самым рациональным, на форумах обычно люди учатся или пишут частенько на отмашку. Всё увиденное нужно понимать и проверять. Последнее также относится к книгам
Такие мысли меня тоже посещали. Видимо так оно и есть на самом деле.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
16.02.2016, 15:03 25
Цитата Сообщение от Nosey Посмотреть сообщение
Если вы можете доказать, что их код неверный или неоптимальный с какими-то доводами - значит этот код неверный/неоптимальный.
Не согласен. Программирование - это процесс языковый, а значит интуитивный и творческий, так что тут гармония алгеброй не всегда поверяется.
Ну, это как спорить, например, кто правильнее написал стихотворение о любви. Математически вроде не докажешь, но всем как-то понятно, что у Ахматовой лучше получилось, чем у какого-нибудь васи пупкина.
0
 Аватар для Nosey
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
16.02.2016, 15:11 26
Цитата Сообщение от Mr.X Посмотреть сообщение
Не согласен. Программирование - это процесс языковый, а значит интуитивный и творческий, так что тут гармония алгеброй не всегда поверяется.
Ну, это как спорить, например, кто правильнее написал стихотворение о любви. Математически вроде не докажешь, но всем как-то понятно, что у Ахматовой лучше получилось, чем у какого-нибудь васи пупкина.
Это да, но это стилистические/душевные/холиварные нюансы, это само собой разумеющееся, озвучивать это ради холивара не хочу
И привёл лишь то, что подталкивает к дополнительному изучению материала.
0
260 / 87 / 30
Регистрация: 29.10.2015
Сообщений: 196
19.02.2016, 18:56 27
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

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

Попробую по нарастающей перечислить признаки крутизны кода.
1) Код выполняет условия задачи. Уже хорошо. И этого иногда достаточно, если задача сиюминутная и к ней больше никогда и никто не вернется - нужны лишь полученные данные, и все.
2) Код контролирует данные, подсовываемые в задачу, и не сваливается при неправильных данных, да еще и предупреждения пользователю выдает. Еще лучше.
3) Код написан в срок. Это вообще классно, и иногда это самый важный пункт.
4) Код вообще не глючил очень долго, и его не смогла "завалить" целая бригада тестировщиков. Еще лучше.
5) Код написан так, что вы вернулись к нему спустя два года, вам понадобилось что-то в нем доработать. И вы все вспомнили, как и что в нем устроено, и вам не понадобилось заново вникать в его структуру. Еще лучше.
6) Код написан так, что другой программист, которому его передали - разобрался в нем без проблем и смог сам внести в него нужные дополнения, не обрушив что-то другое. Еще лучше.

Все, конечно, ИМХО.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2016, 18:56
Помогаю со студенческими работами здесь

Как по матрице смежности понять изоморфны графы или нет
Как по матрице смежности понять изоморфны графы или нет?

Как понять правильно сверстана форма под мобильники или нет?
Здравствуйте. Столкнулся с тем, что если на странице нажать на кнопку Быстрая покупка под фото товара, то в мобильном представлении...

Как понять, ограничена (сверху/снизу/в целом) последовательность или нет?
Как понять ограничена(сверху/снизу/в целом) последовательность или нет? Не понимаю, как определить вид последовательности. Можно кратко...

DVD-RW Asus DRW-24B1S1T SATA Black RTL. Нормальный привод или нет?
Добрый день. Нужно купить DVD-Rom, т.к. старый Nec совсем не пишет и не читает диски. Выбрал: Привод DVD-RW Asus DRW-24B1S1T SATA Black...

Понять, разноцветное изображение или нет
вообщем. нужно понять разноцветное изображение или нет (понятие разноцветное может быть любым, я думаю самое простое - черное-белое оно или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Простая нейросеть на КуМир: Создание и обучение
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 — это платформа, которая упаковывает ваше приложение и все его зависимости в стандартизированные блоки, называемые контейнерами. Эти контейнеры изолированы друг от друга и от основной системы,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер