Pull to refresh

Comments 65

int int_kolichestvoBukv;
float float_glubinaBasseina;
bool bool_estLiZhiznNaMarse;

int int_koJIu4ecTBo6ykB;
float float_rJly6uHa6acceuHA;
bool bool_ectbJIu7Ku3HbHaMapce;

Что-то не увидел тэг «сарказм». Он тут есть?

Во-первых не вяжется с пунктом 5) Давайте переменным максимально короткие имена
Во-вторых, как будут твой код читать коллеги, не знающие языка.
В третьих, даже знающим язык — такое читать — глаза ломать. Уж лучше называйте хоть на транскрипции…

и в очередной раз ваше начальство убедится, что вы хороший сотрудник

Начальству, которое не разбирается особо в коде — вообще пофиг, на чем вы пишете и как пишете
Полезные НЕ советы программисту

И теперь я готов поделиться с вами несколькими советами по программированию

Последняя фраза сбила с толку. Понял, что это всё-же НЕ_СОВЕТЫ, а не «советы, которыми делится автор». Стоило добавить во вторую цитату «готов поделиться несколькими несоветами»…
Количество голосов у так-же запутавшегося zodchiy подтверждают путаницу в трактовках
Подавлю в себе хомяка)
Зато видно, что с чувством юмора на хабре всё в порядке(почти все поняли шуточный посыл поста, кэп)
То есть другие советы не смутили?
Как сисадмин, хочу сказать, что это не ваше собачье программистское дело — думать о флипающихся битах. Точнее, есть области, где об этом конкретно думают — это радиационная устойчивость микросхем и кода для них. Но там точно не «делайте двойной цикл».

Для всего остального цивилизованного мира флип бита во-первых ни к чему критическому не приведёт (привет, 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: распределённость и отказоустойчивость).
то вам сказал, что бит флипнется на вашем «true», а не на адресе перехода
Да вы просто не шарите. while(true) скомпилируется в безусловный переход. Там не будет никакой проверки, будет простой jmp. Goto, если так понятнее. Так что флип бита в этом куске может лишь изменить инструкцию, но не условие (его там попросту нет). А это уже совсем другая проблема.

В конец статьи пропущена картинка с Леонардом Хофстедтером.
Наверняка в jmp можно поменять один бит, так чтобы оно превратилось во что-нибудь безобидное и длина инструкции совпала
Так я и говорю. Изменится инструкция. А от этого уже ничего не спасёт. Хоть в 10 циклов оберните. jmp сменится на hlt (хотя для этого 3 бита флипнуть нужно как минимум, но это для примера). И привет.
Если нужно беспокоиться о «перевёрнутом бите», то используется память с ECC.
Но я догадался, что это юморной пост, но не догадался, что он вообще делает на хабре?
Кстати, отличная идея программе продолжать работе если что-то пошло не так и true вдруг стало false :)
Не очень смешно…
на абапе(SAP R/3) иногда встречается проверка в программах «IF 1 = 0.» а на форумах говорят что в некоторых ситуациях это условие срабатывает!
Ну я бы в таком случае после цикла вызвал бы исключительную ситуацию.
А можно описание этих ситуаций. Я хоть и не абапер, но интересно такое узнать. Да и саперов в очередной раз потролить можно будет.
Давно дело было. Это в основном неисправляемые баги в версиях с экзотическими языками где разные символы могут неожиданно быть равны.
Да дело давно было, уже и не помню этого форума. Но суть сводилась примерно к тому что такие условия могли срабатывать на корейских версиях сервера приложений. Видимо когда идёт сравнение двух символов в юникоде сравниваются только первые их байты и получается подобная фигня. Может, этот баг уже исправили, а может и нет. Кто знает где там ещё они зарыты остались.
Если нужно беспокоиться о «перевёрнутом бите», то используется
Созданный Минобороны США «максимально безопасный» язык Ada получил антипода – язык paranoid, который, как следует из названия, доводит стремление к «безопасному выполнению» до паранойи. Некоторые его конструкции достойны немедленного цитирования (с синхронным переводом):

//типы данных:
х: сомнительное целое;
а: мало_похоже_на массив [x..y а_может_быть z] каких_нибудь символов;
L: безнадежно_поврежденный список слишком_маленьких целых;
//присвоение значения переменной:
x ТОЧНО 3;
x ЧЕСТНОЕ_СЛОВО 3;
x МАМОЙ_КЛЯНУСЬ 3;
Назвали бы язык Рая.)
Перехожу в режим зануды.
Проблемы со слишком_маленькими целыми быть не может, так что там массив слишком маленьких вещественных циселок.)
Низкий поклон за проделанный труд! Можно добавить еще один совет — пользуйтесь копипастой, где только возможно, ведь вызов процедуры\функции — это дополнительные инструкции и пустой расход ресурсов процессора.
Не говоря уже о том, что при копипасте можно внести во вставленный кусок небольшие оптимизирующие изменения, связанные со спецификой конкретно этого вызова (например, если один из параметров — степень двойки, то все умножения на него заменить на сдвиги). Главное при этом — не менять комментарии: это лишняя трата времени и умственных усилий, которые можно направить на что-нибудь более полезное. Например, на защиту от спонтанного изменения битов.
А вот бывают случаи, когда без копипасты не обойтись. Например, большой switch, в котором несколько веток изменить нужно. Как красиво это сделать я не понимать.
Сделать красиво достаточно просто — надо переписать этот участок кода на ассемблере.
Или заменить на множество вложенных if elseif elseif else, это даст возможность больше кастомизировать условие, да и вообще switch — это же моветон!
Еще один совет — писать больше серьёзных и полезных постов.
Еще добавлю:

  • Проверяйте выбранный элемент в ComboBox через if… else if… else if… со строками. Это облегчает написание кода и сразу видно, что имеется ввиду.
  • Всегда создавайте велосипеды для контейнеров из std. Их разработчики — теоретики и ничего не понимают в написании реальных программ. Ваша реализация будет быстрее и лучше
  • Пишите методы по три, а лучше по пять тысяч строк. Читателю вашего кода будет гораздо проще в нем разобраться, ведь нет нужды лазить по множеству файлов и классов.

Было бы смешно, не будь этого в проекте, который мне достался в наследство.
Как выглядит контейнер с методами в три тысячи строк я даже боюсь себе представить. Один метод «Do» с 25ю аргументами???

А если серьёзно, то долгое время и вариантов-то не было: STL начал прилично поддерживаться всякими GCC не так давно (по историческим меркам).
Не, контейнеры отдельно, огромные методы — отдельно. По историческим меркам по Вашей градации это было только что. Когда на того парня наехали зачем ему свои контейнеры — он обиделся, типа куча проделанной работы, а вы не цените.
В наследство — это ещё ничего, есть возможность улучшать мелкими порциями, надеюсь. У меня вот есть коллега, который привык один работать и продолжает порождать огромные методы и другие вещи, делающие код не поддерживаемым.
Ищу возможность по мирному пока сваливать в другой проект, т.к. сам он в своем коде не плохо разбирается, естественно.
Лучше такое публиковать в пятницу — тогда люди быстрее разберутся, в чём дело.
int int_koJIu4ecTBo6ykB;
float float_rJly6uHa6acceuHA;
bool bool_ectbJIu7Ku3HbHaMapce;


Так Вы же сами пишете, что программист может не знать английского! Предлагаю однозначно более лучший универсальный вариант, который подойдет действительно всем:

int LIeJIoe_koJIu4ecTBo6ykB;
float Dpo6Hoe_rJly6uHa6acceuHA;
bool JIOru4eckoe_ectbJIu7Ku3HbHaMapce;

А боярское программирование для не знающих английского на что?
Нет, надо сначала написать
  typedef int LIeJIoe;
  typedef float Dpo6Hoe;
  typedef bool JIOru4eckoe;

а уже потом честно описывать переменные:
LIeJIoe LIeJIoe_koJIu4ecTBo6ykB;
Dpo6Hoe Dpo6Hoe_rJly6uHa6acceuHA;
JIOru4eckoe JIOru4eckoe_ectbJIu7Ku3HbHaMapce;


«Доктор, смените кодировку!»
Так вот ты какой, человек-обфускатор…
Тогда уж лучше писать на джаве.

Целое целое_количествоБукв;
Дробное дробное_глубинаБассейна;
Логическое логическое_естьЛиЖизньНаМарсе;
Бывших 1С-ников не бывает! Как и бывших С-шников и прочих :)
Статья на хабр это хорошо, но можт стоит указать язык в тегах?
Русский, батенька, тут больше за русский ратуют.

Ассемблер, C и Паскаль упоминаются, но все же автор заботится о русскоязычной аудитории, за что ему нижайший (не) поклон!
Да ладно вам. Какая же это «забота о русскоязычной аудитории» если все русские буквы куда-то пропали? Что за низкопоклонство перед западом? Возьмите КОИ-7 и будет вам щястя!
ТЫПЕДЕФ ИНТ Целое;
ТЫПЕДЕФ ФЛОАТ Дробное;
ТЫПЕДЕФ БООЛ Условие;

Целое ВместимостьВБуквах;
Дробное ГлубинаБассейнаВМетрах;
Условие ЕстьЛиЖизньНаМарсеДаНет;
И нет проблем!

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

Drobnoe Drobnoe_dlina[osseW[agah^eloweka;

С++ будет ругаться.
Ерунда. Мы что — хуже американцев? Они могут писать романы без буквы «E», а мы не можем обойтись без нескольких букв? Наоборот — это только добавит остроты!
Чуть было не изошелся на «Ассемблерные вставки» прямо в автобусе пока дочитал! Пять с плюсом за сарказм, если это он.
По-моему, после «ассемблерных вставок» не догадаться, что тут ирония, странно. Спасибо, статья заставила поулыбаться! Особенно про имена переменных.
По-моему, уже на первом пункте понятно, что это пост-шутка)
Ну все-таки «параноик программинг» в некоторых случаях имеет место быть)
пост-шутка — это то, что с человеком сделают после такой шутки?
Как-то в статье смешаны обычные «вредные советы» и «истинное безумие». Имхо, первого добра навалом, можно было бы оставить только второе.
UFO landed and left these words here
Суперкласс — объектно-ориентированное и процедурное программирования в одном флаконе.
<Зануда>
Венгерская нотация это не про типы переменных, а про характер хранимого значения в ней (зарплата, цена продукта — всё в рублях, decimal, но складывать или перемножать их нельзя, на это и должен указывать префикс).
</Зануда>
Я не понял, половина советов кажется реально полезной
Значит, карьерная лестница вас ждет!
Only those users with full accounts are able to leave comments. Log in, please.