Перейти к содержанию
    

Меня можете не понимать, но то, что Вам сказал компилятор понимать просто ОБЯЗАНЫ

Вы даже не поняли что меня не поняли;) ...

 

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

Вы может удивитесь, но то что строка вида

temp;

чтение из temp думаю знают процентов 10 если не меньше

а вот строку вида

dummy = temp; //читаем temp в пустую переменную для правильной работы чего-то

правильно интерпретируют 99% (на вас я 1% запас;))

 

Это никак не связано с тем что temp должен быть объявлен как volatile и так далее, это из 2 разных частей. Для работы компилятора нужно одно, а для понимания проекта людьми, я убежден нужно другое.

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

 

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы даже не поняли что меня не поняли;) ...

Да все я понял :(. Это Вы упорно нелепость "оправдать" пытаетесь :(. Уже до сохранении человеческих жизней при разработке софта недоучками договорились :( - типа если писать больше говна, то это спасет мир :(.

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

Тогда, пожалуйста, просто подумайте, как до введения стандарта с прототипами, я должен был написать вызов функции находящейся в другом объекте компиляции и, например, возврашаюшей указатель на char. Прототипов нет. Написали вызов функции, а что она возвращает компилятору неведомо, ну точнее ведомо, что по умолчанию int. А если не int? Нужно как-то декларировать возвращаемое значение. Вызов компилятор по известым ему типам аргументов сделает, а что возвратят ему неведомо. Посему так:

 

char *function();

...

extern char *ptr;

...

ptr = function();

...

...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

чтение из temp думаю знают процентов 10 если не меньше

Двоечников всегда было больше... и что теперь... таблицу умножения переписывать заново... под каждого???

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На что забивать голову былым? Все решалось теми способами, какие были доступны. Времена меняются, сущности совершенствуются...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На что забивать голову былым? Все решалось теми способами, какие были доступны. Времена меняются, сущности совершенствуются...

но старые исходники все еще живут. Если не быть "чукча писатель", то читать и понимать написанное, тоже надо уметь.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Двоечников всегда было больше... и что теперь... таблицу умножения переписывать заново... под каждого???

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

 

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

 

 

Да все я понял sad.gif. Это Вы упорно нелепость "оправдать" пытаетесь sad.gif.

Да вы правы, это я зря пытался 2 раза стучать в закрытую дверь, не буду больше...

 

char *function();

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

 

Прикольно, я правда не застал времена без хедеров и прототипов, потому и не понимал, спасибо...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Это и есть... из тёплого делать мягкое... вам просто это не понять... От незнаний и рождаются монстры... монстры порождают глюки... и т.д. ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не надо крайностей, я всего лишь пытаюсь сказать что

 

строчке вида

data = (bus=get_addr()) ? data_in : -1;

 

предпочту блок вида

bus = get_addr(); // получаем адрес
if(bus !=0) //если не 0 
   data = data_in; //забираем данные
else //для 0 адреса
  data = -1; //ставим флаг - 1

 

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

 

Теперь приведите вы пример когда такой подход рождается монстра.... Только не надо про строчки на экран, сейчас можно по 2 монитора и огромного размера....

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

предпочту блок вида

bus = get_addr(); // получаем адрес
if(bus !=0) //если не 0 
   data = data_in; //забираем данные
else //для 0 адреса
  data = -1; //ставим флаг - 1

Посыл правильный, но с комментариями накосячили. Ну вот зачем писать "data = -1; //ставим флаг - 1" и т.д. и т.п.??? Одно из первых правил комментирования: не комментируйте то, что и так понятно (даже двоечнику).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

когда такой подход рождается монстра....

Одна строчка... или несколько??? Чудесно... когда незнания прикрываются "для лучшего понимания"...

Ещё веселей... когда эмбеддерство сравнивают с работой кассира... Поменяйте их местами... Эмбеддер спросит... "Куда здесь подключиться, мне шрифт на чеке не нравится?"... кассир спросит... "Что нажать, чтобы выехал чек с уже готовой программой?"...

 

Одно из первых правил комментирования: не комментируйте то, что и так понятно (даже двоечнику).

Просто... Одно из первых правил... двоечники не знают правил...

Изменено пользователем HHIMERA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

 

Теперь приведите вы пример когда такой подход рождается монстра....

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

-1

Может комментарии что-то прояснят?

//ставим флаг - 1

 

Потрясающе понятно :(

 

Все это вместо того, что-бы написать одну строчку типа:

 

data = get_addr() ? data_in : END_DATA;

 

 

 

 

 

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я выбираю первый вариант, что выдал Golikov, однозначно. Мне в нем все понятно, красиво, компактно. Комментарий написал бы перед строчкой, что-нибудь "прочитать шину".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

data = get_addr() ? data_in : END_DATA;

Минуточку! Там ещё было присваивание перед сравнением. А без присваивания я бы и сам так написал. ИМХО, тех, кто не понимает "?:", нельзя подпускать к клавиатуре.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посыл правильный, но с комментариями накосячили. Ну вот зачем писать "data = -1; //ставим флаг - 1" и т.д. и т.п.??? Одно из первых правил комментирования: не комментируйте то, что и так понятно (даже двоечнику).

ну это так в спешке написанное.... имел ввиду что выдаем не значение а флаг, ну то есть что-то делаем и понятно комментируем

 

Минуточку! Там ещё было присваивание перед сравнением

Именно меня бесят конструкции вида if(data = funct())

то есть вызываем функцию, ее результат присваиваем, и сразу используем в виде условия...

 

?: - хорошо, а когда это

? : ? : ? :....

да еще чтобы компактнее было пробелы повырезают....

 

 

 

data = get_addr() ? data_in : END_DATA;

Кстати вот мы только что наблюдали типичную ошибку компактного стиля.

Человек с колосальным опытом, взглянув на его любимый стиль

Вместо четкого и быстровоспринимаемого выражения нагородили сложное, которое быстро не воспирнимается,

и быстро воспринял конструкцию НЕ правильно.

 

так что дальше можно уже писать что угодно. Оно в жизьни именно так и бывает...

 

 

 

Ну где-то так. В этом выражении () только для того, что-бы обозначить

Понятно, я такое реально не застал, познавательно, спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Минуточку! Там ещё было присваивание перед сравнением. А без присваивания я бы и сам так написал. ИМХО, тех, кто не понимает "?:", нельзя подпускать к клавиатуре.

Там было

bus = get_addr(); // получаем адрес
if(bus !=0) //если не 0 
   data = data_in; //забираем данные
else //для 0 адреса
  data = -1; //ставим флаг - 1

Я не вижу никакого другого использования bus для чего либо.

Еще вопросы?

 

Именно меня бесят конструкции вида if(data = funct())то есть вызываем функцию, ее результат присваиваем, и сразу используем в виде условия...

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

В языке абсолютно четко расписано что является результатом операции присваивания и порядок выполнения операций. Какие это дает поводы бесится, даже если написано

a = b = c = d;

?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...