Комментарии 65
int int_kolichestvoBukv;
float float_glubinaBasseina;
bool bool_estLiZhiznNaMarse;
int int_koJIu4ecTBo6ykB;
float float_rJly6uHa6acceuHA;
bool bool_ectbJIu7Ku3HbHaMapce;
Что-то не увидел тэг «сарказм». Он тут есть?
Во-первых не вяжется с пунктом 5) Давайте переменным максимально короткие имена
Во-вторых, как будут твой код читать коллеги, не знающие языка.
В третьих, даже знающим язык — такое читать — глаза ломать. Уж лучше называйте хоть на транскрипции…
и в очередной раз ваше начальство убедится, что вы хороший сотрудник
Начальству, которое не разбирается особо в коде — вообще пофиг, на чем вы пишете и как пишете
-45
Полезные НЕ советы программисту
И теперь я готов поделиться с вами несколькими советами по программированию
Последняя фраза сбила с толку. Понял, что это всё-же НЕ_СОВЕТЫ, а не «советы, которыми делится автор». Стоило добавить во вторую цитату «готов поделиться несколькими несоветами»…
Количество голосов у так-же запутавшегося zodchiy подтверждают путаницу в трактовках
Подавлю в себе хомяка)
-15
То есть другие советы не смутили?
+4
Тут тэг сарказм — на всю статью.
0
Я так понимаю это была ирония?
+29
Как сисадмин, хочу сказать, что это не ваше собачье программистское дело — думать о флипающихся битах. Точнее, есть области, где об этом конкретно думают — это радиационная устойчивость микросхем и кода для них. Но там точно не «делайте двойной цикл».
Для всего остального цивилизованного мира флип бита во-первых ни к чему критическому не приведёт (привет, ECC), во-вторых, кто вам сказал, что бит флипнется на вашем «true», а не на адресе перехода?
Неверно работающее оборудование — это проблема сисадминов. Выглядит она так:
CPU_SrcID#0_Channel#3_DIMM#0 (channel:3 slot:0 page:0x379c86 offset:0xdc0 grain:32 syndrome:0x0 — area:DRAM err_code:0001:0093 socket:0 channel_mask:8 rank:0)
И мы точно знаем, что с этим делать.
А вот вам (программистам) надо подумать, а что вы будете делать, когда все биты в памяти компьютера инвертируются? (hint: распределённость и отказоустойчивость).
Для всего остального цивилизованного мира флип бита во-первых ни к чему критическому не приведёт (привет, ECC), во-вторых, кто вам сказал, что бит флипнется на вашем «true», а не на адресе перехода?
Неверно работающее оборудование — это проблема сисадминов. Выглядит она так:
CPU_SrcID#0_Channel#3_DIMM#0 (channel:3 slot:0 page:0x379c86 offset:0xdc0 grain:32 syndrome:0x0 — area:DRAM err_code:0001:0093 socket:0 channel_mask:8 rank:0)
И мы точно знаем, что с этим делать.
А вот вам (программистам) надо подумать, а что вы будете делать, когда все биты в памяти компьютера инвертируются? (hint: распределённость и отказоустойчивость).
-39
то вам сказал, что бит флипнется на вашем «true», а не на адресе переходаДа вы просто не шарите. while(true) скомпилируется в безусловный переход. Там не будет никакой проверки, будет простой jmp. Goto, если так понятнее. Так что флип бита в этом куске может лишь изменить инструкцию, но не условие (его там попросту нет). А это уже совсем другая проблема.
В конец статьи пропущена картинка с Леонардом Хофстедтером.
+16
Наверняка в jmp можно поменять один бит, так чтобы оно превратилось во что-нибудь безобидное и длина инструкции совпала
0
Если нужно беспокоиться о «перевёрнутом бите», то используется память с ECC.
Но я догадался, что это юморной пост, но не догадался, что он вообще делает на хабре?
Но я догадался, что это юморной пост, но не догадался, что он вообще делает на хабре?
+8
Кстати, отличная идея программе продолжать работе если что-то пошло не так и true вдруг стало false :)
0
Не очень смешно…
на абапе(SAP R/3) иногда встречается проверка в программах «IF 1 = 0.» а на форумах говорят что в некоторых ситуациях это условие срабатывает!
на абапе(SAP R/3) иногда встречается проверка в программах «IF 1 = 0.» а на форумах говорят что в некоторых ситуациях это условие срабатывает!
0
Ну я бы в таком случае после цикла вызвал бы исключительную ситуацию.
0
А можно описание этих ситуаций. Я хоть и не абапер, но интересно такое узнать. Да и саперов в очередной раз потролить можно будет.
0
Давно дело было. Это в основном неисправляемые баги в версиях с экзотическими языками где разные символы могут неожиданно быть равны.
Да дело давно было, уже и не помню этого форума. Но суть сводилась примерно к тому что такие условия могли срабатывать на корейских версиях сервера приложений. Видимо когда идёт сравнение двух символов в юникоде сравниваются только первые их байты и получается подобная фигня. Может, этот баг уже исправили, а может и нет. Кто знает где там ещё они зарыты остались.
Да дело давно было, уже и не помню этого форума. Но суть сводилась примерно к тому что такие условия могли срабатывать на корейских версиях сервера приложений. Видимо когда идёт сравнение двух символов в юникоде сравниваются только первые их байты и получается подобная фигня. Может, этот баг уже исправили, а может и нет. Кто знает где там ещё они зарыты остались.
0
Если нужно беспокоиться о «перевёрнутом бите», то используется
Созданный Минобороны США «максимально безопасный» язык Ada получил антипода – язык paranoid, который, как следует из названия, доводит стремление к «безопасному выполнению» до паранойи. Некоторые его конструкции достойны немедленного цитирования (с синхронным переводом):
//типы данных:
х: сомнительное целое;
а: мало_похоже_на массив [x..y а_может_быть z] каких_нибудь символов;
L: безнадежно_поврежденный список слишком_маленьких целых;
//присвоение значения переменной:
x ТОЧНО 3;
x ЧЕСТНОЕ_СЛОВО 3;
x МАМОЙ_КЛЯНУСЬ 3;
+1
У вас опечатка в заголовке… Нужно «НЕ» убрать :)
+4
Низкий поклон за проделанный труд! Можно добавить еще один совет — пользуйтесь копипастой, где только возможно, ведь вызов процедуры\функции — это дополнительные инструкции и пустой расход ресурсов процессора.
+18
Не говоря уже о том, что при копипасте можно внести во вставленный кусок небольшие оптимизирующие изменения, связанные со спецификой конкретно этого вызова (например, если один из параметров — степень двойки, то все умножения на него заменить на сдвиги). Главное при этом — не менять комментарии: это лишняя трата времени и умственных усилий, которые можно направить на что-нибудь более полезное. Например, на защиту от спонтанного изменения битов.
+5
А вот бывают случаи, когда без копипасты не обойтись. Например, большой switch, в котором несколько веток изменить нужно. Как красиво это сделать я не понимать.
0
Еще один совет — писать больше серьёзных и полезных постов.
+12
Еще добавлю:
Было бы смешно, не будь этого в проекте, который мне достался в наследство.
- Проверяйте выбранный элемент в ComboBox через if… else if… else if… со строками. Это облегчает написание кода и сразу видно, что имеется ввиду.
- Всегда создавайте велосипеды для контейнеров из std. Их разработчики — теоретики и ничего не понимают в написании реальных программ. Ваша реализация будет быстрее и лучше
- Пишите методы по три, а лучше по пять тысяч строк. Читателю вашего кода будет гораздо проще в нем разобраться, ведь нет нужды лазить по множеству файлов и классов.
Было бы смешно, не будь этого в проекте, который мне достался в наследство.
+8
Как выглядит контейнер с методами в три тысячи строк я даже боюсь себе представить. Один метод «Do» с 25ю аргументами???
А если серьёзно, то долгое время и вариантов-то не было: STL начал прилично поддерживаться всякими GCC не так давно (по историческим меркам).
А если серьёзно, то долгое время и вариантов-то не было: STL начал прилично поддерживаться всякими GCC не так давно (по историческим меркам).
0
В наследство — это ещё ничего, есть возможность улучшать мелкими порциями, надеюсь. У меня вот есть коллега, который привык один работать и продолжает порождать огромные методы и другие вещи, делающие код не поддерживаемым.
Ищу возможность по мирному пока сваливать в другой проект, т.к. сам он в своем коде не плохо разбирается, естественно.
Ищу возможность по мирному пока сваливать в другой проект, т.к. сам он в своем коде не плохо разбирается, естественно.
0
Лучше такое публиковать в пятницу — тогда люди быстрее разберутся, в чём дело.
+23
int int_koJIu4ecTBo6ykB; float float_rJly6uHa6acceuHA; bool bool_ectbJIu7Ku3HbHaMapce;
Так Вы же сами пишете, что программист может не знать английского! Предлагаю однозначно более лучший универсальный вариант, который подойдет действительно всем:
int LIeJIoe_koJIu4ecTBo6ykB;
float Dpo6Hoe_rJly6uHa6acceuHA;
bool JIOru4eckoe_ectbJIu7Ku3HbHaMapce;
+19
А боярское программирование для не знающих английского на что?
+3
Нет, надо сначала написать
а уже потом честно описывать переменные:
typedef int LIeJIoe;
typedef float Dpo6Hoe;
typedef bool JIOru4eckoe;
а уже потом честно описывать переменные:
LIeJIoe LIeJIoe_koJIu4ecTBo6ykB;
Dpo6Hoe Dpo6Hoe_rJly6uHa6acceuHA;
JIOru4eckoe JIOru4eckoe_ectbJIu7Ku3HbHaMapce;
+52
Сделайте меня развидеть это. Люто плюсанул бы, да не могу.
0
Так вот ты какой, человек-обфускатор…
+5
Тогда уж лучше писать на джаве.
Целое целое_количествоБукв;
Дробное дробное_глубинаБассейна;
Логическое логическое_естьЛиЖизньНаМарсе;
0
Как будто бывший 1С-ник начал пытаться кодить на Cи ))
0
+34
Статья на хабр это хорошо, но можт стоит указать язык в тегах?
+1
Русский, батенька, тут больше за русский ратуют.
Ассемблер, C и Паскаль упоминаются, но все же автор заботится о русскоязычной аудитории, за что ему нижайший (не) поклон!
Ассемблер, C и Паскаль упоминаются, но все же автор заботится о русскоязычной аудитории, за что ему нижайший (не) поклон!
+9
Да ладно вам. Какая же это «забота о русскоязычной аудитории» если все русские буквы куда-то пропали? Что за низкопоклонство перед западом? Возьмите КОИ-7 и будет вам щястя!
Правда придётся отказаться от любимного «универсального стиля» в связи с отсуствием подчёркивания, но и так хорошо смотрится.
ТЫПЕДЕФ ИНТ Целое;И нет проблем!
ТЫПЕДЕФ ФЛОАТ Дробное;
ТЫПЕДЕФ БООЛ Условие;
Целое ВместимостьВБуквах;
Дробное ГлубинаБассейнаВМетрах;
Условие ЕстьЛиЖизньНаМарсеДаНет;
Правда придётся отказаться от любимного «универсального стиля» в связи с отсуствием подчёркивания, но и так хорошо смотрится.
+3
Не пройдёт. При обратном переключении эти надписи, конечно, останутся корректными, но на какое-нибудь
Drobnoe Drobnoe_dlina[osseW[agah^eloweka;
С++ будет ругаться.
Drobnoe Drobnoe_dlina[osseW[agah^eloweka;
С++ будет ругаться.
+2
Ерунда. Мы что — хуже американцев? Они могут писать романы без буквы «E», а мы не можем обойтись без нескольких букв? Наоборот — это только добавит остроты!
0
+2
Чуть было не изошелся на «Ассемблерные вставки» прямо в автобусе пока дочитал! Пять с плюсом за сарказм, если это он.
+5
По-моему, после «ассемблерных вставок» не догадаться, что тут ирония, странно. Спасибо, статья заставила поулыбаться! Особенно про имена переменных.
+2
Как-то в статье смешаны обычные «вредные советы» и «истинное безумие». Имхо, первого добра навалом, можно было бы оставить только второе.
+1
+1
Суперкласс — объектно-ориентированное и процедурное программирования в одном флаконе.
<Зануда>
Венгерская нотация это не про типы переменных, а про характер хранимого значения в ней (зарплата, цена продукта — всё в рублях, decimal, но складывать или перемножать их нельзя, на это и должен указывать префикс).
</Зануда>
<Зануда>
Венгерская нотация это не про типы переменных, а про характер хранимого значения в ней (зарплата, цена продукта — всё в рублях, decimal, но складывать или перемножать их нельзя, на это и должен указывать префикс).
</Зануда>
0
Просто поржал от души. Спасибо.
0
Остер, вредные советы для программистов прям
0
Я не понял, половина советов кажется реально полезной
0
Адовый ад.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Полезные НЕ советы программисту