Когда код работает но не так
Перейти к содержимому

Когда код работает но не так

  • автор:

Твой код никого не интересует

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

Код — это инструмент

Написание кода не является работой программиста. А является ей создание приложения для решения определенных задач. Да, код — это основной инструмент, который для этого используется, но все равно это всего лишь инструмент. Так же как работа столяра не заключается в использовании молотка или пилы — она заключается в производстве чего-либо при помощи этих инструментов.

Однако, некоторые действия могут привести к ошибочному мнению, что именно код является продуктом. Например, рефакторинг: что мы улучшаем с его помощью: код или продукт? Если ответ код — ни один менеджер не даст времени на это занятие. Но стоит объяснить, что это может исправить существующие ошибки или поможет внедрить новую возможность, и, внезапно, время на это найдется.

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

Это не означает, что код не является чем-то ценным и не должен проверяться в контексте требований к продукту. Обеспечение безопасности и отказоустойчивости требует мастерства и использования правильных библиотек. Вот где код должен делать свою работу, остальное не должно выделяться. Чем быстрее рецензент пройдет такой код — тем более он будет удовлетворен.

Идея «Код — это инструмент» является причиной важности знаний нескольких языков и фреймворков; причиной пользы знаний математики и теории сложности, однако отсутствия необходимости в таких знаниях; причиной, по которой среда разработки может оказаться как замечательной находкой, так и самой страшной ловушкой. Все это является мерилом гибкости для программиста, которая напрямую зависит от разнообразия его инструментария.

Упор на характеристики

Возьмем, к примеру, встречу с ПМом или заказчиком. Что ты ему расскажешь? Сколько строк кода написано, сколько классов создано, как работают скрипты, обрабатываются исключения и как устроена база?

К сожалению, часто ответ на все эти вопросы «Да, именно это я ему и расскажу». А его лицо в это время ты видал? Ему скучно. Ему бы поскорей перейти к следующим пунктам. Эти детали не имеют для него ни малейшей ценности. Не то, чтобы он не понимал, о чем речь, его просто это не волнует.

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

Общаться надо на уровне состояний готовности: импортирование готово, но не хватает поддержки того и этого; приложение работает на большинстве телефонов, но на вот этом все еще подтормаживает; клиентское приложение уже работает, но функционал пока убогий. Вот что важно для менеджера или заказчика. Вот что несет для него информацию, полезную в контексте планирования дальнейших действий.

Твоя библиотека ничего не стоит

Я часто встречаю вопросы в интернете, связанные с защитой исходного кода. Программист пишет код для заказчика и использует для этого свою личную библиотеку. И вот, клиент требует исходный код всего проекта, и программист задумывается: не хочется отдавать ценный код своей библиотеки.

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

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

Но что, если библиотека действительно ценная? Если действительно есть уверенность, что она сама может быть продуктом. Тогда можно поделиться ей, или же даже продать, может, что и выйдет. Стоит только учитывать, что очень немногие такие продукты достигли хоть какой-нибудь успешности.

Такое упражнение вообще полезно для любого программиста. Оно приводит к осознанию того, как мало других программистов интересует твоя работа. Да взять хоть даже твой собственный проект. Чем ты руководствуешься при выборе сторонней библиотеки: тем, какой в ней классный код, или тем, какие крутые вещи она умеет делать? Ты хоть заглядываешь в ее код после установки?

Да, но.

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

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

Целью программиста является улучшение продукта, а не кода. Для максимальной эффективности нужно отталкиваться от того, что должен делать продукт и понимать, в чем заключается истинная ценность результата.

  • Веб-разработка
  • Программирование
  • Совершенный код

Почему этот код работает не так как надо? [закрыт]

Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

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

Закрыт 1 год назад .

Это кусок из моего кода, почему-то он не работает, или работает не так, как надо. Этот код должен считать кол-во единиц в строке, но при выводе он всегда выводит «0».

cb = 0 for a in "1011": if a == 1: cb += 1 print(cb) 

Код работает не так, как нужно

Нужно чтобы массив заполнился случайными числами в функции и программа вывела эти числа на экран. Но результат некорректный: выводит 00E11564. Как исправить?

#include "stdafx.h" #include using namespace std; //----------- Заполнение генератором случайных значений------------- void RndArray(int *mass1, const int N, int &a, int &b) < for (int i = 0; i < N; i++)< // диапазон случайных значений от a до b mass1[i] = a + rand() % (b - a + 1); >> int main()

Отслеживать
задан 6 мар 2021 в 11:20
5 3 3 бронзовых знака
У вас в std::cout выводится адрес функции RndArray: cout << RndArray << endl; 6 мар 2021 в 11:25 @VladimirGamalyan а как вывести значение? 6 мар 2021 в 11:31 Примерно так: for (int i = 0; i 6 мар 2021 в 11:31 @VladimirGamalyan Мне нельзя использовать в функциях вывод, такое условие задания 6 мар 2021 в 11:33

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

cout  
for(int i = 0; i < n; ++i) cout  

Кроме того, не забудьте указать значения для a и b , а то у вас будет выводиться не пойми что.

Кроме того, совсем не нужно передавать int по ссылке - зачем? Вот так вполне работоспособно.

Отслеживать
ответ дан 6 мар 2021 в 11:33
218k 15 15 золотых знаков 117 117 серебряных знаков 229 229 бронзовых знаков

  • c++
  • массивы
  • функции
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Код работает, но что то пошло не так

Все получилось, спасибо за помощь, поправил значения, z от 0 и вместо 4 пятерку надо прибавлять, ошибка так сказать математическая, а я уж думал с циклом не так что то делаю.

Уровень 10
25 марта 2020, 16:17
Об этом я не подумал, спасибо большое, буду разбираться дальше
Уровень 10
25 марта 2020, 10:53

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

Ksenia Volkova Java Developer в DXC Master
25 марта 2020, 11:39

У тебя же цикл бесконечный - while (true) - поэтому если ты его не прервешь, то программа никогда не завершится. А строки выводятся, потому что рано или поздно твой счетчики (x, y, z, w) достигают максимально возможного для int значения, и происходит как бы "перехлёст". Если мы к максимальному значению прибавим 1 - получим минимально возможное значение:

System.out.println(Integer.MAX_VALUE); // 2147483647 System.out.println(Integer.MAX_VALUE + 1); // -2147483648

Это свзано с тем, как компьютер хранит и оперирует числами. И, соответственно, в какой-то момент один из if-ов сработает снова.

Уровень 10
25 марта 2020, 10:09

Согласен, что то совсем уже запутался, тогда там изменится значение прибавление. Вообще цикл идет от 0 до 60 изначально, потом поставил true, на случай если больше 60 минут вводить. Вообще через цикл решать таким образом, это правильный подход?

Ksenia Volkova Java Developer в DXC Master
25 марта 2020, 10:14

Есть более эффектиный способ решения, но с циклом тоже можно сделать рабочий вариант. Просто нужно правильно задать интервалы. То, что убрал ограничение в 60 минут - это правильно.

Уровень 10
25 марта 2020, 09:28
проверка от 0 , чтобы условие проходило , если ввести 0.5 минут например.
Уровень 10
25 марта 2020, 09:27

получется, что зелёный горит. 0, до 3, 5 до 7, 9 до 11 и т.д желтый горит 3 до 4, 7 до 8, 11 до 12 и т.д красный от 4 до 5, 8 до 9, 12 до 13 и т.д, по 4 прибавляем каждый раз.

Ksenia Volkova Java Developer в DXC Master
25 марта 2020, 09:40
Интересно, почему это зеленый горит с 5 до 7, если сказано, что он горит 3 минуты?
Ksenia Volkova Java Developer в DXC Master
25 марта 2020, 08:11

Зачем нужна отдельная проверка для числа от 0 до 1? Почему увеличиваешь переменные на 4? Сколько длится цикл работы светофора?

  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
  • Задачи-игры

Сообщество

JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *