что нельзя делать никогда
От: stronk2  
Дата: 18.12.13 05:24
Оценка: -7
Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?

По моей версии:
1. магические константы
2. копи-паста

Ваши варианты?
Re: что нельзя делать никогда
От: 0x7be СССР  
Дата: 18.12.13 05:30
Оценка: +9
Здравствуйте, stronk2, Вы писали:

S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?

Никакие.
Всегда есть кейс одноразовой программки, которая будет тут же выброшена, там можно ВСЕ )
Re: что нельзя делать никогда
От: мыщъх США http://nezumi-lab.org
Дата: 18.12.13 05:54
Оценка: 4 (2) +4 -3
Здравствуйте, stronk2, Вы писали:

S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?


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

S>По моей версии:

S>1. магические константы
контрпример -- коэффициенты в различных вычислениях. самые умные имена будут К1, К2, К3. "умность" тут в краткости, т.к. К1 короче чем 123456789.987654321, но за это приходится платить поиском мест, где они определены.

S>2. копи-паста

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

S>Ваши варианты?

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

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

магические константы и копи-паста -- это тактика, которая вообще очень спорный и субъективный момент.

ЗЫ. пояснения не помешают. что такое магические константы? если это гравитационная постоянная, то и хрен с ней. она, действительно, константа. а вот ширина экрана в 80 символов в текстовом режиме -- это переменная и тут, действительно, использование констант привязывает программу к одному единственному разрешению, однако, использование переменных само по себе не дает гибкости, ибо чтобы программа работала на экранах разных размеров заставляет намного глубже продумывать интерфейс, особенно с учетом того, что там может быть скролл (скажем, высота экрана 1000 строк, но отображаются только 100 из них, а потому выводить что-либо в центр -- очень плохая идея, намного худшая нежили работать с фиксированным разрешением 80х25).

ЗЫ.ЗЫ. если и есть что-то, что _никогда_ не следует делать, так это исходить из предпосылки, что все юзеры работают с том же окружении, что и разработчик по.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[2]: что нельзя делать никогда
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 18.12.13 06:18
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>ЗЫ.ЗЫ. если и есть что-то, что _никогда_ не следует делать, так это исходить из предпосылки, что все юзеры работают с том же окружении, что и разработчик по.


Это у тебя случай "коробочного ПО" по Спольскому. Там — да, эта ошибка фатальна.
Но вот у меня сейчас обстановка, что я знаю на 100%, что на целевых системах будет RHEL 6.5 с теми пакетами, которые я скажу установить, а различие начнётся с кабеля, вставленного в ethernet
The God is real, unless declared integer.
Re: что нельзя делать никогда
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 18.12.13 06:22
Оценка: +1
Здравствуйте, stronk2, Вы писали:

S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?


Если исключить из рассмотрения 1) одноразовый код (уже сказали), 2) автогенерируемый код и 3) код после обфускации, и оставить только то, что люди пишут руками, то это:
  • Зависимые от языка грубейшие нарушения стиля, которые принципиально мешают читать код. Кроме названного Вами (но в заземлённом к реальности варианте) это не соответствующее вообще никаким правилам оформление кода (начиная с отступов).
  • Заведомые отступления от спецификаций, в диапазоне от неверных алгоритмов до троянских закладок.

    S>По моей версии:

    S>1. магические константы

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

    S>2. копи-паста


    Копипастинг плох, как минимум в пределах одного файла, но есть случаи, когда лучше его делать (с редактированием по месту), чем пытаться изобретать что-то обобщённое.
    У меня такое происходит в тестах.
  • The God is real, unless declared integer.
    Re[3]: что нельзя делать никогда
    От: Ziaw Россия  
    Дата: 18.12.13 06:26
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Но вот у меня сейчас обстановка, что я знаю на 100%, что на целевых системах будет RHEL 6.5 с теми пакетами, которые я скажу установить, а различие начнётся с кабеля, вставленного в ethernet


    Сколько он там будет стоять без обновлений?
    Re[4]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 06:30
    Оценка:
    Здравствуйте, Ziaw, Вы писали:

    N>>Но вот у меня сейчас обстановка, что я знаю на 100%, что на целевых системах будет RHEL 6.5 с теми пакетами, которые я скажу установить, а различие начнётся с кабеля, вставленного в ethernet


    Z>Сколько он там будет стоять без обновлений?


    Это неважно, потому что обновляться он будет вместе с моими целевыми пакетами.
    The God is real, unless declared integer.
    Re[2]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 06:38
    Оценка: -1
    Здравствуйте, мыщъх, Вы писали:

    М>контрпример -- коэффициенты в различных вычислениях. самые умные имена будут К1, К2, К3. "умность" тут в краткости, т.к. К1 короче чем 123456789.987654321, но за это приходится платить поиском мест, где они определены.


    Какие коэффициенты, откуда взялись?

    М>если код размножен в 100500 местах, то это очень плохо. если код размножен в двух местах, которые к тому же слегка отличаются друг от друга -- это вполне нормально и ничуть не смертельно.


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

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


    А нагадить посреди своей комнаты — это стратегия или тактика?

    М>ЗЫ. пояснения не помешают. что такое магические константы?


    Ну ладно, нельзя требовать, чтобы все знали терминологию. Но хотя бы гуглить ты умеешь?
    Re[3]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 06:46
    Оценка: +2 -1
    Здравствуйте, stronk2, Вы писали:

    М>>если код размножен в 100500 местах, то это очень плохо. если код размножен в двух местах, которые к тому же слегка отличаются друг от друга -- это вполне нормально и ничуть не смертельно.


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


    "Рубить руки" и навсегда изгонять из профессии — это надо применять к программисту, который не знает ни даже православного юниксового diff с несколькими режимами сравнения и вывода, ни даже простейшего виндового cmp.

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


    S>А нагадить посреди своей комнаты — это стратегия или тактика?


    Когда начинаются таки сравнения, ясно, что аргументы кончились.

    М>>ЗЫ. пояснения не помешают. что такое магические константы?


    S>Ну ладно, нельзя требовать, чтобы все знали терминологию. Но хотя бы гуглить ты умеешь?


    Я пошёл за попкорном.
    The God is real, unless declared integer.
    Re[4]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 06:56
    Оценка: -1
    Здравствуйте, netch80, Вы писали:

    N>"Рубить руки" и навсегда изгонять из профессии — это надо применять к программисту, который не знает ни даже православного юниксового diff с несколькими режимами сравнения и вывода, ни даже простейшего виндового cmp.


    Код должен быть простым и понятным безо всяких диффов. Ваш Кэп.

    N>Когда начинаются таки сравнения, ясно, что аргументы кончились.


    Когда начинается важное надувание щек, аргументы точно кончились.
    Re[5]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 06:57
    Оценка: -2
    Здравствуйте, stronk2, Вы писали:

    N>>"Рубить руки" и навсегда изгонять из профессии — это надо применять к программисту, который не знает ни даже православного юниксового diff с несколькими режимами сравнения и вывода, ни даже простейшего виндового cmp.

    S>Код должен быть простым и понятным безо всяких диффов.

    Он простой и понятный.

    S> Ваш Кэп.


    Вы ошиблись кораблём, уважаемый.

    N>>Когда начинаются таки сравнения, ясно, что аргументы кончились.


    S>Когда начинается важное надувание щек, аргументы точно кончились.


    Верное замечание. Сдуйте щёки и вернитесь к теме треда.
    The God is real, unless declared integer.
    Re[2]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 06:59
    Оценка:
    Здравствуйте, 0x7be, Вы писали:

    0>Всегда есть кейс одноразовой программки, которая будет тут же выброшена, там можно ВСЕ )


    Даже в этом случае надо соблюдать минимальные правила гигиены. Чтобы не привыкать
    Re[6]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 07:00
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Он простой и понятный.


    Если ты предлагаешь использовать для его анализа дифф — очевидно, что нет.
    Re[7]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 07:02
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    N>>Он простой и понятный.


    S>Если ты предлагаешь использовать для его анализа дифф — очевидно, что нет.


    Объясни тогда связь. Вот рассказ git'а (или почти любого аналога) об изменении, внесённом коммитом — это тоже дифф. Ты считаешь, что код должен быть настолько простым и понятным, чтобы не смотреть в этот дифф, а всё понимать по commit message?
    The God is real, unless declared integer.
    Re[8]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 07:07
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Объясни тогда связь. Вот рассказ git'а (или почти любого аналога) об изменении, внесённом коммитом — это тоже дифф. Ты считаешь, что код должен быть настолько простым и понятным, чтобы не смотреть в этот дифф, а всё понимать по commit message?


    Смешалось всё — кони, люди...
    Дифф в гите нужен для того, чтобы понять что изменилось в коде, а не что делает код. Искренне ваш, Генерал Очевидность.
    Re[9]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 07:11
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Здравствуйте, netch80, Вы писали:


    N>>Объясни тогда связь. Вот рассказ git'а (или почти любого аналога) об изменении, внесённом коммитом — это тоже дифф. Ты считаешь, что код должен быть настолько простым и понятным, чтобы не смотреть в этот дифф, а всё понимать по commit message?


    S>Смешалось всё — кони, люди...


    У тебя — да.

    S>Дифф в гите нужен для того, чтобы понять что изменилось в коде, а не что делает код.


    Цитирую твои слова:

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


    Где тут хоть слово про "что делает код"? Вопрос был целиком и полностью про отличие текстов. Потому я и сказал про дифф. А понятность, очевидно (tm), определяется содержанием, а не различиями.

    S> Искренне ваш, Генерал Очевидность.


    Вообще-то Капитан Очевидность вырастает до Адмирала Ясен Хрен (я заменил последнее слово на похожее, но пригодное для открытых источников). Генералов тут в иерархии не встречается.
    The God is real, unless declared integer.
    Re[10]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 07:13
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Где тут хоть слово про "что делает код"?


    А с какими целями люди читают код? Я не виноват, что ты не в состоянии сложить 2 и 2.
    Re: что нельзя делать никогда
    От: D. Mon Великобритания http://thedeemon.livejournal.com
    Дата: 18.12.13 07:13
    Оценка: :))) :))) :)))
    Здравствуйте, stronk2, Вы писали:

    S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?


    1. Динамическая типизация.
    2. С++

    Re[10]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 07:19
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Генералов тут в иерархии не встречается.


    Кроме капитана флота есть еще и капитан армии. Не позорился бы с такими безграмотными "разоблачениями".
    Re[11]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 07:21
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    N>>Где тут хоть слово про "что делает код"?


    S>А с какими целями люди читают код?


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

    S> Я не виноват, что ты не в состоянии сложить 2 и 2.


    Да, получить в результате этой операции 9, как ты сделал, я не могу. Что-то мешает. Образование и опыт, наверно...
    The God is real, unless declared integer.
    Re[6]: что нельзя делать никогда
    От: MTD https://github.com/mtrempoltsev
    Дата: 18.12.13 07:24
    Оценка: +1 -1
    Здравствуйте, netch80, Вы писали:

    S>>Код должен быть простым и понятным безо всяких диффов.


    N>Он простой и понятный.


    Если сказал глупость, лучше промолчать, чем продолжать усугублять.
    Re[12]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 07:24
    Оценка:
    Здравствуйте, netch80, Вы писали:

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


    Это зависит от радиуса кривизны.

    N>Образование и опыт, наверно...


    Все 6 месяцев опыта?
    Re[2]: что нельзя делать никогда
    От: MTD https://github.com/mtrempoltsev
    Дата: 18.12.13 07:27
    Оценка:
    Здравствуйте, мыщъх, Вы писали:

    М>контрпример -- коэффициенты в различных вычислениях. самые умные имена будут К1, К2, К3. "умность" тут в краткости, т.к. К1 короче чем 123456789.987654321, но за это приходится платить поиском мест, где они определены.


    Это ложная альтернатива, выбирайте дерьмо №1 или дерьмо №2.

    S>>2. копи-паста

    М>если код размножен в 100500 местах, то это очень плохо. если код размножен в двух местах, которые к тому же слегка отличаются друг от друга -- это вполне нормально и ничуть не смертельно.

    А потом кто-то увидит одну часть и подумает, ну не страшно, будет в двух местах, и вот у нас уже 3 места.
    Re[11]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 07:27
    Оценка: :)
    Здравствуйте, stronk2, Вы писали:

    N>>Генералов тут в иерархии не встречается.

    S>Кроме капитана флота есть еще и капитан армии.
    S> Не позорился бы с такими безграмотными "разоблачениями".

    А ты не позорился бы с полным незнанием мемов, если уж решил их применять.
    The God is real, unless declared integer.
    Re[13]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 07:30
    Оценка:
    Здравствуйте, stronk2, Вы писали:

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


    S>Это зависит от радиуса кривизны.


    Верно. Именно поэтому я использую минимально кривые решения.

    N>>Образование и опыт, наверно...


    S>Все 6 месяцев опыта?


    По сравнению с 2 днями, наверно, 6 месяцев это грандиозная величина? Ну а что-то большее, например, 20 лет вообще выходит за пределы доступного воображению
    The God is real, unless declared integer.
    Re[7]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 07:30
    Оценка:
    Здравствуйте, MTD, Вы писали:

    S>>>Код должен быть простым и понятным безо всяких диффов.

    N>>Он простой и понятный.
    MTD>Если сказал глупость, лучше промолчать, чем продолжать усугублять.

    Посыл верный, адресат — нет
    The God is real, unless declared integer.
    Re[14]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 07:33
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Верно. Именно поэтому я использую минимально кривые решения.


    Это смотря чем измерять.

    N>Ну а что-то большее, например, 20 лет вообще выходит за пределы доступного воображению


    Скудное у тебя воображение.
    Re[12]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 07:35
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>А ты не позорился бы с полным незнанием мемов, если уж решил их применять.


    Крайне забавно слышать это от человека, который записал КО во флот.
    Re[3]: что нельзя делать никогда
    От: мыщъх США http://nezumi-lab.org
    Дата: 18.12.13 07:38
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Здравствуйте, мыщъх, Вы писали:


    М>>ЗЫ.ЗЫ. если и есть что-то, что _никогда_ не следует делать, так это исходить из предпосылки, что все юзеры работают с том же окружении, что и разработчик по.


    N>Это у тебя случай "коробочного ПО" по Спольскому. Там — да, эта ошибка фатальна.

    N>Но вот у меня сейчас обстановка, что я знаю на 100%, что на целевых системах будет RHEL 6.5 с теми пакетами, которые я скажу установить, а различие начнётся с кабеля, вставленного в ethernet

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

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

    а управление через веб-интерфейс -- это смотря какой браузер. с ними слишком много граблей. в том числе и упомянутое мной разрешение экрана.

    ЗЫ. интересно, а вы пишете сразу на выброс или как? RHEL 6.5 это же не навсегда. какова продолжительность жизни вашего кода? насколько он специфичен для решаемой задачи? вы не допускаете мысли, что ваш код может назавтра понадобиться в виндовом окружении? если не весь код, то какая-то его часть.
    americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
    Re[13]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 07:39
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    N>>А ты не позорился бы с полным незнанием мемов, если уж решил их применять.

    S>Крайне забавно слышать это от человека, который записал КО во флот.

    Я его туда не записывал.
    The God is real, unless declared integer.
    Re[15]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 07:40
    Оценка: :)
    Здравствуйте, stronk2, Вы писали:

    N>>Верно. Именно поэтому я использую минимально кривые решения.

    S>Это смотря чем измерять.
    N>>Ну а что-то большее, например, 20 лет вообще выходит за пределы доступного воображению
    S>Скудное у тебя воображение.

    Ты уже третий раз пишешь быструю реплику, судорожно сносишь её и пишешь ещё раз исправленное. Не следует пытаться меряться силами с опытными флеймерами, всё равно перевес в этой специальной олимпиаде решается годами опыта, а не подобными рывками. У меня этот опыт есть, но применять его тут я не хочу — во-первых, не тот форум, а во-вторых, долго такое неинтересно (я даже во flame.comp стараюсь его не применять, несмотря на название). И вообще, работать надо. Поэтому — не знаю, как ты, а я дальше буду писать только в конструктивном русле. Итак, вопрос. Почему ты считаешь, что я действовал неадекватно, скопировав код теста и доработав его под новую специфику? Например, подправил режим группы моков?
    Прошу отвечать исключительно по сути, остальное будет игнорироваться, включая всякие "так нельзя, потому что так нельзя никогда".
    The God is real, unless declared integer.
    Re: что нельзя делать никогда
    От: peterbes Россия  
    Дата: 18.12.13 07:42
    Оценка: 6 (1) +1
    Здравствуйте, stronk2, Вы писали:

    S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?


    S>По моей версии:

    S>1. магические константы
    S>2. копи-паста

    S>Ваши варианты?


    Захламлять текст программы длиннющими и бессмысленными названиями

    MyBoost::Ля_ля_ля::Три_рубля::не_получишь::нифига::my_long МояПеременнаяОбъявленнаяПоУдачномуСлучаю = НеМояПеременная;
    Re[14]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 07:42
    Оценка: -1
    Здравствуйте, netch80, Вы писали:

    N>Я его туда не записывал.


    Вообще-то Капитан Очевидность вырастает до Адмирала Ясен Хрен (я заменил последнее слово на похожее, но пригодное для открытых источников). Генералов тут в иерархии не встречается


    Прекращай позориться. Хотя бы сам себе не противоречь.
    Re[15]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 07:44
    Оценка: -1
    Здравствуйте, stronk2, Вы писали:

    N>>Я его туда не записывал.


    S>

    S>Вообще-то Капитан Очевидность вырастает до Адмирала Ясен Хрен (я заменил последнее слово на похожее, но пригодное для открытых источников). Генералов тут в иерархии не встречается


    S>Прекращай позориться.


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

    S> Хотя бы сам себе не противоречь.


    _Себе_ я не противоречил.
    The God is real, unless declared integer.
    Re[16]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 07:45
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Не следует пытаться меряться силами с опытными флеймерами, всё равно перевес в этой специальной олимпиаде решается годами опыта, а не подобными рывками. У меня этот опыт есть


    А я такими вещами и не занимался. Специальная олимпиада — это своеобразная штука. Даже если ты победил, ты все равно умственно недоразвитый.
    Re[16]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 07:46
    Оценка: -1
    Здравствуйте, netch80, Вы писали:

    N>Позоришься тут ты, разведя в полезном форуме предельно идиотский флейм.


    Главное — обвинить во флейме кого-нибудь другого.

    N>_Себе_ я не противоречил.


    Это просто ложь.
    Re[16]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 07:48
    Оценка:
    Здравствуйте, netch80, Вы писали:

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


    Понимание этого обычно приходит с опытом и набитыми шишками.
    Re[17]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 07:52
    Оценка: -1
    Здравствуйте, stronk2, Вы писали:

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


    S>Понимание этого обычно приходит с опытом и набитыми шишками.


    OK, если у тебя есть какой-то опыт, которого нет у меня, ты, наверно, можешь его изложить словами и примерами. Покажи случай, когда описанный стиль поведения с кодом приводил к каким-то серьёзным последствиям в плане затрат времени, которого бы не было при том варианте, который ты предлагаешь. Пример должен относиться именно к тестам, а не к основному коду, потому что я (независимо от полной позиции) сказал это именно для случая тестов. Можно предельно упростить, исказить какие-то детали, если хочешь скрыть, я не настаиваю на точности и не тороплю, но пример должен быть убедительным.
    The God is real, unless declared integer.
    Re[18]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 07:57
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Пример должен относиться именно к тестам, а не к основному коду, потому что я (независимо от полной позиции) сказал это именно для случая тестов.


    С копипастерами я уже давно не работаю, поэтому пример именно для тестов привести не могу.
    Re[4]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 07:58
    Оценка: -2
    Здравствуйте, мыщъх, Вы писали:

    М>>>ЗЫ.ЗЫ. если и есть что-то, что _никогда_ не следует делать, так это исходить из предпосылки, что все юзеры работают с том же окружении, что и разработчик по.

    N>>Это у тебя случай "коробочного ПО" по Спольскому. Там — да, эта ошибка фатальна.
    N>>Но вот у меня сейчас обстановка, что я знаю на 100%, что на целевых системах будет RHEL 6.5 с теми пакетами, которые я скажу установить, а различие начнётся с кабеля, вставленного в ethernet
    М>это очень фатальное различие. да, я тоже писал под аппаратно-программный комплекс, где все казалось детерминированным, но... это оказалось заблуждением. но дело даже не в этом. пусть ваша система доступна для управления через телнет. если вы мак-юзер, то у вас телнет из коробоки. если же вы виндовый юзер, то там или доустанавливать непонятно какой софт или бить разработчиков ногами, чтобы оно работало с виндовым телнетом, что вовсе не факт (если они не обеспечили совместимость).

    Вопрос понятен. Лично мой компонент (софтсвич) поддерживает SIP, включая основные грабли его реализации у кучи клиентских устройств, вендорских шлюзов, и так далее. Вот у вебовцев (морда биллинга и управления настройками) тут, конечно, значительно сложнее: у них в полный рост яваскрипт, какие-то аналоги ajax, и прочее, что может работать с конкретными браузерами и не работать с другими.
    Телнета там не предполагается

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

    М>а управление через веб-интерфейс -- это смотря какой браузер. с ними слишком много граблей. в том числе и упомянутое мной разрешение экрана.


    Да, и это тоже. Со смартфона этим не поуправляешь, слишком много деталей требуется на экране. В терминах коллеги SV это софт для профессионалов, а не изиотов.

    М>ЗЫ. интересно, а вы пишете сразу на выброс или как? RHEL 6.5 это же не навсегда. какова продолжительность жизни вашего кода? насколько он специфичен для решаемой задачи? вы не допускаете мысли, что ваш код может назавтра понадобиться в виндовом окружении? если не весь код, то какая-то его часть.


    Не допускаем. Он весь на выделенных серверах, затачиваться на иное не имеет смысла. Опять же, только Unix (зачем нам тут винда?) Раньше был FreeBSD, теперь Linux — на 90% это из-за Oracle (я не вижу смысла в нём, но клиенты настояли). Продолжительность — мой компонент с 2004, биллинг с 2001 — по-моему, неплохие цифры Разумеется, многое было переделано за это время чуть более чем полностью.

    M> RHEL 6.5 это же не навсегда.


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

    Вообще, конечно, у меня тепличный случай в том смысле, что не машина конечного клиента. Это очень многое упрощает. Тот же классический пример Спольского с польской Windows тут уже не будет актуален.
    От современных десктопов я плююсь практически от всех хотя второй (честный второй) гном на 6-м дебиане это то, что для простого лаптопа устраивает на 90%.
    The God is real, unless declared integer.
    Re[19]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 08:00
    Оценка: -1
    Здравствуйте, stronk2, Вы писали:

    N>>Пример должен относиться именно к тестам, а не к основному коду, потому что я (независимо от полной позиции) сказал это именно для случая тестов.


    S>С копипастерами я уже давно не работаю, поэтому пример именно для тестов привести не могу.


    Спасибо, вопросов тут больше не имею.
    The God is real, unless declared integer.
    Re[8]: что нельзя делать никогда
    От: MTD https://github.com/mtrempoltsev
    Дата: 18.12.13 08:18
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Посыл верный, адресат — нет


    Еще пол часа подумай, как с оценочкой, может поймешь
    Re[9]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 08:23
    Оценка: -1
    Здравствуйте, MTD, Вы писали:

    N>>Посыл верный, адресат — нет

    MTD>Еще пол часа подумай, как с оценочкой, может поймешь

    1. К тебе та же просьба: или показывай пример, или не захламляй форум тупым флеймом.
    2. Я вообще-то работаю (не знаю, как некоторые), а мерять тайминг ответов и делать из него выводы — как раз стиль того, кому сейчас явно нечем заняться.
    3. Да, раз ты начал ставить минусы — я не считаю себя обязанным отвечать тем же, но могу и поставить. Просто для того, чтобы тот, кто пришёл сюда за чем-то полезным, имел быстрый якорь для взгляда.
    The God is real, unless declared integer.
    Re[3]: что нельзя делать никогда
    От: мыщъх США http://nezumi-lab.org
    Дата: 18.12.13 08:30
    Оценка: 96 (5) +7 :)
    Здравствуйте, stronk2, Вы писали:

    S>Здравствуйте, мыщъх, Вы писали:


    М>>контрпример -- коэффициенты в различных вычислениях. самые умные имена будут К1, К2, К3. "умность" тут в краткости, т.к. К1 короче чем 123456789.987654321, но за это приходится платить поиском мест, где они определены.


    S>Какие коэффициенты, откуда взялись?

    например, перевод фаренгейта в цельсия. вот формула. вас не затруднит написать программу?



    очень хочется увидеть осмысленные названия вместо магических констант. а самое главное -- понять _нахрена_ оно им? и это -- простейший случай. или вы не сталкивались ни с какими вычислениями вообще? какую формулу ни возьми -- в ней полно безымянных "магических констант". попытка дать им "самопальные" имена только запутает программу.


    М>>если код размножен в 100500 местах, то это очень плохо. если код размножен в двух местах, которые к тому же слегка отличаются друг от друга -- это вполне нормально и ничуть не смертельно.

    S>Самый худший вид копипасты, за который вообще надо руки рубить. Попробуй определи с одного взгляда — чем отличаются два похожих куска текста, и отличаются ли вообще.
    и за что тогда рубить руки? вы снова мыслите тактически. обратите внимание на копи-пасту в АПИ. размножение сущностей с идентичной семантикой, но разными именами АПИ -- это, действительно, мрак. тем более, что с АПИ людям работать, а с копи-пастой в худшем случае появляются проблемы с поддержкой кода, да и то не факт, т.к. преодоление копипасты путем, скажем, шаблонов -- встречает свои проблемы.


    S>А нагадить посреди своей комнаты — это стратегия или тактика?

    гадить перед приходом вероятного противника -- это тактический прием. гадить после его ухода -- стратегический.

    М>>ЗЫ. пояснения не помешают. что такое магические константы?

    S>Ну ладно, нельзя требовать, чтобы все знали терминологию. Но хотя бы гуглить ты умеешь?
    и где там определение? например, делим длину на два. нужно ли писать
    #define half 2
    или можно писать /2 ? или вот... for (idx=0;idx<len;idx++) это нормально? или неявный 1 нужно заменить на one, 0 -- start_index, len -- end_index
    вы же не можете не признать, что end_index это лучше? for (idx=start_index;idx==end_index;idx+=one), где end_index = len — one, правда, тут нужно еще предусмотреть случай когда len == 0, где 0 определен как empty_xxx (вместо ххх -- название сущности).

    так все-таки где граница магичности? а как на счет магических алгоритмов? смотрите в программу и видите в ней 1 + х и думаете, что это наверное ошибка, т.к. тут должно быть е**х, но программа работает. почему? вопрос в самом деле интересный, т.к. при копи-пасте она проработает недолго и быстро сломается. если х это не аргумент функции и если х удовлетворяет определенным условиям неизвестным вам, то оно... работает. причем очень шустро. допустим, функция не может возвращать ошибку и не имеет права кидать исключений, а х -- вычисляется в рантайме -- тут ведь даже проверку на соответствие этим условиям не вставишь...

    а вот еще. написано -- (k + 4)/10. оно заменяет кучу ресурсоемких вычислений и выдает удивительно точный результат, который долго пытались объяснить аналитическим путем, выдвинули несколько гипотез почему оно работает, но потом плюнул и забили болт. работает -- и ладно. для k == 8 не работает. но k никогда не равно 8, т.к. не соответствует никакой физической реальности, но работает для 7 и 9. даже для -1 работает. во. а теперь скажите мне -- что оно считает. а оно определенно что-то считает.
    americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
    Re[10]: что нельзя делать никогда
    От: MTD https://github.com/mtrempoltsev
    Дата: 18.12.13 08:37
    Оценка: -1
    Здравствуйте, netch80, Вы писали:

    N>1. К тебе та же просьба: или показывай пример, или не захламляй форум тупым флеймом.


    Кто бы говорил.

    N>2. Я вообще-то работаю (не знаю, как некоторые), а мерять тайминг ответов и делать из него выводы — как раз стиль того, кому сейчас явно нечем заняться.


    Вот иди и работай. А когда будет время, подумай какую хрень несешь.

    N>3. Да, раз ты начал ставить минусы — я не считаю себя обязанным отвечать тем же, но могу и поставить. Просто для того, чтобы тот, кто пришёл сюда за чем-то полезным, имел быстрый якорь для взгляда.


    Мама, мама, он первый начал!
    Re: что нельзя делать никогда
    От: k.o. Россия  
    Дата: 18.12.13 08:44
    Оценка: +1
    Здравствуйте, stronk2, Вы писали:

    S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?


    S>По моей версии:

    S>1. магические константы
    S>2. копи-паста

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

    А по поводу констант:

    the use of 0 and 1 as initial or incremental values in a for loop, such as for (int i = 0; i < max; i = i + 1) (assuming i++ is not supported)
    the use of 2 to check whether a number is even or odd, as in isEven = (x % 2 == 0), where % is the modulo operator
    the use of simple arithmetic constants, e.g., in expressions such as circumference = 2 * Math.PI * radius, or for calculating the discriminant of a quadratic equation as d = b^2 − 4*a*c

    Re[3]: что нельзя делать никогда
    От: мыщъх США http://nezumi-lab.org
    Дата: 18.12.13 08:51
    Оценка: +3 -1
    Здравствуйте, MTD, Вы писали:

    MTD>Здравствуйте, мыщъх, Вы писали:


    М>>контрпример -- коэффициенты в различных вычислениях. самые умные имена будут К1, К2, К3. "умность" тут в краткости, т.к. К1 короче чем 123456789.987654321, но за это приходится платить поиском мест, где они определены.


    MTD>Это ложная альтернатива, выбирайте дерьмо №1 или дерьмо №2.


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

    MTD>А потом кто-то увидит одну часть и подумает, ну не страшно, будет в двух местах, и вот у нас уже 3 места.

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

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

    ЗЫ. скажи мне свою философию и я скажу кто ты. если ваш код решает нерешенную проблему -- к стилю кодирования относятся намного более снисходительно.
    americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
    Re: что нельзя делать никогда
    От: TarasB  
    Дата: 18.12.13 08:52
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?


    S>По моей версии:

    S>1. магические константы
    S>2. копи-паста

    S>Ваши варианты?


    1. ==true
    2. Ручное управление памятью
    3. Недетерминированный сборщик мусора
    4. С++
    Re[4]: что нельзя делать никогда
    От: vnp  
    Дата: 18.12.13 08:56
    Оценка:
    Здравствуйте, мыщъх, Вы писали:

    М>и где там определение? например, делим длину на два. нужно ли писать

    М>#define half 2

    боже упаси. #define оторвет руки сам, без нашего участия.

    М>или можно писать /2 ?

    M>или вот... for (idx=0;idx<len;idx++) это нормально? или неявный 1 нужно заменить на one, 0 -- start_index, len -- end_index

    А вот так низзя. Семантика for менялась как минимум 6 раз. Единственно кошерный способ это while (idx < len). Смайликов не ставлю из принципа.

    М>вы же не можете не признать, что end_index это лучше? for (idx=start_index;idx==end_index;idx+=one), где end_index = len — one, правда, тут нужно еще предусмотреть случай когда len == 0, где 0 определен как empty_xxx (вместо ххх -- название сущности).


    Еще кошернее, while (begin != end). Ну, вы поняли.

    М>так все-таки где граница магичности? а как на счет магических алгоритмов? смотрите в программу и видите в ней 1 + х и думаете, что это наверное ошибка, т.к. тут должно быть е**х, но программа работает. почему? вопрос в самом деле интересный, т.к. при копи-пасте она проработает недолго и быстро сломается. если х это не аргумент функции и если х удовлетворяет определенным условиям неизвестным вам, то оно... работает. причем очень шустро. допустим, функция не может возвращать ошибку и не имеет права кидать исключений, а х -- вычисляется в рантайме -- тут ведь даже проверку на соответствие этим условиям не вставишь...


    А вот такого я не встречал. Пример можно?

    М>а вот еще. написано -- (k + 4)/10. оно заменяет кучу ресурсоемких вычислений и выдает удивительно точный результат, который долго пытались объяснить аналитическим путем, выдвинули несколько гипотез почему оно работает, но потом плюнул и забили болт. работает -- и ладно. для k == 8 не работает. но k никогда не равно 8, т.к. не соответствует никакой физической реальности, но работает для 7 и 9. даже для -1 работает. во. а теперь скажите мне -- что оно считает. а оно определенно что-то считает.


    Выдыхай... что-нибудь соответствующее какой-нибудь физической реальности, желательно.
    Re[4]: что нельзя делать никогда
    От: MTD https://github.com/mtrempoltsev
    Дата: 18.12.13 08:59
    Оценка:
    Здравствуйте, мыщъх, Вы писали:

    М>хорошо, вот реальная формула (к + 4)/10, которая вычисляет то, что вычислить нельзя (нет таких вычислительных мощностей) и потому _это_ держат в таблицах.


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

    MTD>>А потом кто-то увидит одну часть и подумает, ну не страшно, будет в двух местах, и вот у нас уже 3 места.

    М>предложите альтернативу? шаблоны или наследование или еще что-то.

    По ситуации.
    Re: что нельзя делать никогда
    От: Tilir Россия http://tilir.livejournal.com
    Дата: 18.12.13 09:20
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?


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

    Не знаю насколько это "в коде", конечно...

    Что до магических констант, глобальных переменных и прочего, хм... вот простой тестик из dejagnu:

    {code}
    #include <string.h>

    static int
    special_format (fmt)
    const char *fmt;
    {
    return (strchr (fmt, '*') != 0
    || strchr (fmt, 'V') != 0
    || strchr (fmt, 'S') != 0
    || strchr (fmt, 'n') != 0);
    }

    main()
    {
    if (special_format ("ee"))
    abort ();
    if (!special_format ("*e"))
    abort ();
    exit (0);
    }
    {code}

    Копипаста очевидна, магические константы в ассортименте. Тест, тем не менее, функционален и вполне понятен. Он работает там с 2000 года и его никто ни разу не трогал. И НЕ НАДО.
    Re[5]: что нельзя делать никогда
    От: мыщъх США http://nezumi-lab.org
    Дата: 18.12.13 09:29
    Оценка: 2 (1) +1
    Здравствуйте, netch80, Вы писали:

    N>Здравствуйте, мыщъх, Вы писали:


    N>От современных десктопов я плююсь практически от всех

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

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

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

    я по молодости столько косяков допускал... скажем, не проверял размер файла лога на максимально возможный размер файла, допускаемый данной файловой системой, т.к. не хотел геморра и обоснованно (реально обоснованно) считал, что даже за сто лет работы программа не приблизится к нему даже наполовину. как же я ошибался. объемы обрабатываемых данных возросли, а с ними возросли и логи, причем появились удоды, которые для своего удодства стали размешать логи на съемных дисках, размечанных под фатом, чтобы их открывать под виндой или маком. а у меня проверка только на размер свободного пространства, которого еще есть, но мы упираемся в ограничение фат. кстати, под никсами. когда я разобрался в ситуации, то очень долго матерился. в самом деле -- откуда под никсами фат?! времена 9х давно прошли. была бы это винда --- там была бы НТФС с которой нет таких проблем, но... оказалось, что нужно быть готовым к самому невероятному.
    americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
    Re[20]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 09:31
    Оценка: -1
    Здравствуйте, netch80, Вы писали:

    N>Спасибо, вопросов тут больше не имею.


    Не забудь поставить зарубку на клавиатуре, спец-чемпион
    Re[4]: что нельзя делать никогда
    От: stronk2  
    Дата: 18.12.13 09:32
    Оценка:
    Здравствуйте, мыщъх, Вы писали:

    М>например, перевод фаренгейта в цельсия. вот формула. вас не затруднит написать программу?


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

    М>а вот еще. написано -- (k + 4)/10. оно заменяет кучу ресурсоемких вычислений и выдает удивительно точный результат, который долго пытались объяснить аналитическим путем, выдвинули несколько гипотез почему оно работает, но потом плюнул и забили болт. работает -- и ладно.


    Вот примерно такие случаи говнокода я и имел в виду.
    Re[6]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 09:48
    Оценка:
    Здравствуйте, мыщъх, Вы писали:

    N>>От современных десктопов я плююсь практически от всех

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

    Не так. "Начнётся" у нас при попытке создать рабочую конфигурацию, инструкции по апгрейду и т.п. До кастомеров дойдёт уже простая инструкция типа "вставьте диск, нажмите Enter, ничего не трогайте и ждите зелёного свистка".
    Причём основные сложности при переносе ОС это именно чтобы в процессе апгрейда система осталась живой без необходимости ставить с нуля. У RedHat это возможно далеко не всегда, тот же RHEL, на моей памяти, несколько раз переносился только по принципу "забэкапить, снести, поставить с нуля, вернуть данные с бэкапа". А дальше апгрейды базы и прочие уже кастомные радости целевого софта.

    М> даже если они и не начнут...


    Если не начнут — то может ничего и не случиться. При том, что вышла версия 38, есть такие, у которых до сих пор 12-яф. Разумеется, уже без поддержки. Но работает... я сам фигею.

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


    Так подобные чудеса всегда есть — прогресс не стоит на месте. То какое-нибудь EFI придумают, то планшеты вдруг появятся...

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


    Было такое, да. И не только с диском. Слышал, как ставили Win95 на машину с 1GB RAM. Та отказалась — мало ей памяти...
    А ещё потому, что FAT16 не тянул (AFAIR) больше 2G, а FAT32 был недоступен в тех ОС.

    М>я по молодости столько косяков допускал... скажем, не проверял размер файла лога на максимально возможный размер файла, допускаемый данной файловой системой, т.к. не хотел геморра и обоснованно (реально обоснованно) считал, что даже за сто лет работы программа не приблизится к нему даже наполовину. как же я ошибался. объемы обрабатываемых данных возросли, а с ними возросли и логи, причем появились удоды, которые для своего удодства стали размешать логи на съемных дисках, размечанных под фатом, чтобы их открывать под виндой или маком. а у меня проверка только на размер свободного пространства, которого еще есть, но мы упираемся в ограничение фат. кстати, под никсами. когда я разобрался в ситуации, то очень долго матерился. в самом деле -- откуда под никсами фат?! времена 9х давно прошли. была бы это винда --- там была бы НТФС с которой нет таких проблем, но... оказалось, что нужно быть готовым к самому невероятному.


    "удод для своего удодства" это сильно, надо запомнить.
    The God is real, unless declared integer.
    Re[5]: что нельзя делать никогда
    От: k.o. Россия  
    Дата: 18.12.13 10:09
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Вот по формуле и напишу, не забыв указать, откуда она взялась.


    По формуле, это как, с неименованными константами? Так ведь их "нельзя использовать никогда и ни при каких условиях".

    М>>а вот еще. написано -- (k + 4)/10. оно заменяет кучу ресурсоемких вычислений и выдает удивительно точный результат, который долго пытались объяснить аналитическим путем, выдвинули несколько гипотез почему оно работает, но потом плюнул и забили болт. работает -- и ладно.


    S>Вот примерно такие случаи говнокода я и имел в виду.


    Т.е. куча ресурсоемких вычислений будет лучше?
    Re: что нельзя делать никогда
    От: robin_of_the_wood Россия  
    Дата: 18.12.13 11:15
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?


    S>По моей версии:

    S>1. магические константы
    S>2. копи-паста

    S>Ваши варианты?


    У всех правил есть исключения. Иногда они настолько специфичны, что ими можно пренебречь. А иногда и наоборот.
    Поэтому запоминая любое правило очень важно понимать причины появления этого правила.
    Это позволит принимать правильное решение об использовании данного правила в конкретной ситуации.
    Споры в этой ветке это кстати подтверждают.
    У разных людей были разные ситуации и следование одинаковым правилам приводило к совершенно разному результату.
    Тут как с лыжами.
    Если упустить из виду необходимость наличия снега,
    то о целесообразности их одевания можно спорить очень долго и безрезультатно при полной правоте обоих сторон.
    Проектирование велосипедов для слепых жирафов
    Re[10]: что нельзя делать никогда
    От: Кодт Россия  
    Дата: 18.12.13 12:51
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Вообще-то Капитан Очевидность вырастает до Адмирала Ясен Хрен (я заменил последнее слово на похожее, но пригодное для открытых источников). Генералов тут в иерархии не встречается.


    Ну здрасьте, как это не встречается. А генерал Фейлор?
    Будучи (_|_), он встречается в любой иерархии. Причём, как это и полагается для полноты и неизбежности, он находится на самом верху.
    Перекуём баги на фичи!
    Re[4]: что нельзя делать никогда
    От: Кодт Россия  
    Дата: 18.12.13 13:00
    Оценка: 2 (1)
    Здравствуйте, мыщъх, Вы писали:

    М>например, перевод фаренгейта в цельсия. вот формула. вас не затруднит написать программу?


    М>


    А теперь рядом — обратный перевод?

    float const C0_in_F   =  +32.0; // +32F = 0C
    float const C100_in_F = +212.0; // +212
    float const C_per_F   = (100-0)/(C100_in_F-C0_in_F); // 5./9.
    
    float constexpr C_from_F(float f) { return (f-C0_in_F)*C_per_F; }
    float constexpr F_from_C(float c) { return (c/C_per_F)+C0_in_F; }
    Перекуём баги на фичи!
    Re[11]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 18.12.13 13:08
    Оценка:
    Здравствуйте, Кодт, Вы писали:

    К>Здравствуйте, netch80, Вы писали:


    N>>Вообще-то Капитан Очевидность вырастает до Адмирала Ясен Хрен (я заменил последнее слово на похожее, но пригодное для открытых источников). Генералов тут в иерархии не встречается.


    К>Ну здрасьте, как это не встречается. А генерал Фейлор?

    К>Будучи (_|_), он встречается в любой иерархии.

    А он очевиден?

    Обычно _стараются_ считать, что он невероятен. Хотя с реализацией этого достаточно часто бывают проблемы

    К> Причём, как это и полагается для полноты и неизбежности, он находится на самом верху.


    Там ещё в небе Арктический Лис маячит. Но его упоминать всуе считается дурным тоном, его методы слишком радикальны.
    The God is real, unless declared integer.
    Re[5]: что нельзя делать никогда
    От: мыщъх США http://nezumi-lab.org
    Дата: 19.12.13 10:42
    Оценка: -2
    Здравствуйте, Кодт, Вы писали:

    К>Здравствуйте, мыщъх, Вы писали:


    М>>например, перевод фаренгейта в цельсия. вот формула. вас не затруднит написать программу?


    М>>


    К>А теперь рядом — обратный перевод?


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

    float const C_per_F = (100-0)/(C100_in_F-C0_in_F); // 5./9.

    зачем все это, если вы уже знаете, что оно 5.9 ?

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

    в _вашей_ реализации имена переменных не отражают _подлинной_ сути. в контексте обсуждения копипасты -- это актуально.
    americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
    Re: что нельзя делать никогда
    От: TimurSPB Интернет  
    Дата: 19.12.13 10:44
    Оценка: +2 :)
    S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?
    Непонятные.
    Make flame.politics Great Again!
    Re[15]: что нельзя делать никогда
    От: Michael7 Россия  
    Дата: 19.12.13 10:46
    Оценка: +1
    Здравствуйте, stronk2, Вы писали:

    S>

    S>Вообще-то Капитан Очевидность вырастает до Адмирала Ясен Хрен (я заменил последнее слово на похожее, но пригодное для открытых источников). Генералов тут в иерархии не встречается


    S>Прекращай позориться. Хотя бы сам себе не противоречь.


    Меня на ржач пробило, коллеги оглядываются. Спор о воинской принадлежности Капитана Очевидность, как результат выяснения вопроса о стилях и методах программирования.
    Re[5]: что нельзя делать никогда
    От: Erop Россия  
    Дата: 19.12.13 11:30
    Оценка: +2 -1
    Здравствуйте, stronk2, Вы писали:

    S>Код должен быть простым и понятным безо всяких диффов. Ваш Кэп.


    Копи-паста этому ничуть не мешает...
    Ещё раз поясни, зачем вообще сравнивать два места в коде в принципе? предположим, что ты второе написал ен копипастой, а просто из головы...

    Копи-паста, вообще не тем страшна, что трудно чот-то сравнивать, а тем, что
    1) Провоцирует ошибки типа "правил, но недоправил"
    2) Вообще провоцирует неосознаность действий при написании кода
    3) При исправлении в одном месте, не правится само в остальных.
    Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
    Re[3]: что нельзя делать никогда
    От: Erop Россия  
    Дата: 19.12.13 11:34
    Оценка:
    Здравствуйте, MTD, Вы писали:

    MTD>А потом кто-то увидит одну часть и подумает, ну не страшно, будет в двух местах, и вот у нас уже 3 места.

    Ну и что?
    Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
    Re[5]: что нельзя делать никогда
    От: Erop Россия  
    Дата: 19.12.13 11:50
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    М>>а вот еще. написано -- (k + 4)/10. оно заменяет кучу ресурсоемких вычислений и выдает удивительно точный результат, который долго пытались объяснить аналитическим путем, выдвинули несколько гипотез почему оно работает, но потом плюнул и забили болт. работает -- и ладно.


    S>Вот примерно такие случаи говнокода я и имел в виду.


    А какая альтернатива?..
    Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
    Re[2]: что нельзя делать никогда
    От: Erop Россия  
    Дата: 19.12.13 11:58
    Оценка:
    Здравствуйте, TimurSPB, Вы писали:

    S>>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?

    TSP>Непонятные.

    Это да, но это
    1) Субъективно
    2) Иногда всё равно надо
    Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
    Re: что нельзя делать никогда
    От: Erop Россия  
    Дата: 19.12.13 11:59
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Ваши варианты?


    Комментарии, не относящиеся к делу, например такие:
    // Наташа из кубикла 7-q-13 ведётся на шашлычок под водочку ;)
    Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
    Re[2]: что нельзя делать никогда
    От: denisko http://sdeniskos.blogspot.com/
    Дата: 19.12.13 12:03
    Оценка: :))) :)
    Здравствуйте, Erop, Вы писали:

    E>Комментарии, не относящиеся к делу, например такие:

    E>
    // Наташа из кубикла 7-q-13 ведётся на шашлычок под водочку ;)

    Ну это лучший вид комментариев при условии, что Наташа
    0) Наташа имеет ярко выраженные половые признаки
    1) еще работает
    2) это та же самая Наташа
    <Подпись удалена модератором>
    Re: что нельзя делать никогда
    От: Mystic Украина http://mystic2000.newmail.ru
    Дата: 19.12.13 12:06
    Оценка: +2
    Здравствуйте, stronk2, Вы писали:

    S>1. магические константы


    const int index64[64] = {
        0,  1, 48,  2, 57, 49, 28,  3,
       61, 58, 50, 42, 38, 29, 17,  4,
       62, 55, 59, 36, 53, 51, 43, 22,
       45, 39, 33, 30, 24, 18, 12,  5,
       63, 47, 56, 27, 60, 41, 37, 16,
       54, 35, 52, 21, 44, 32, 23, 11,
       46, 26, 40, 15, 34, 20, 31, 10,
       25, 14, 19,  9, 13,  8,  7,  6
    };
     
    /**
     * bitScanForward
     * @author Martin Läuter (1997)
     *         Charles E. Leiserson
     *         Harald Prokop
     *         Keith H. Randall
     * "Using de Bruijn Sequences to Index a 1 in a Computer Word"
     * @param bb bitboard to scan
     * @precondition bb != 0
     * @return index (0..63) of least significant one bit
     */
    int bitScanForward(U64 bb) {
       const U64 debruijn64 = 0x03f79d71b4cb0a89;
       assert (bb != 0);
       return index64[((bb & -bb) * debruijn64) >> 58];
    }
    
    int bitScanForward(U64 bb) {
       assert (bb != 0);
       return index64[((bb & -bb) * 0x03f79d71b4cb0a89) >> 58];
    }


    В данном случае не вижу никакой разницы между двумя вариантами. Все равно константа 0x03f79d71b4cb0a89 не выйдет за пределы функции.

    S>2. копи-паста

    Все хорошо в меру. Если это не система, то вполне допустимо. Особенно если непонятно, куда занесет дальше. Копи-паста меньшее зло, чем попытка натянуть сову на глобус, пытаясь объединить необъеденимое.


    S>Ваши варианты?

    Я против догматов
    Re[6]: что нельзя делать никогда
    От: Кодт Россия  
    Дата: 19.12.13 13:32
    Оценка: +1
    Здравствуйте, мыщъх, Вы писали:

    К>>А теперь рядом — обратный перевод?


    М>вы отклонились от исходной формулы далеко на север, что затрудняет сопровождение программы. далеко не каждую формулу можно разобрать по кирпичикам, а если можно, то ненужно. в исходной формуле были "магические константы". у вас они сохранились. вы их перенесли в имена переменных. причем, в С0 от нуля легко освободиться, т.к. шкалы смещены друг относительно друга на 32 градуса в _любой_ _точке_. температуры кипения воды не было в исходной формуле и вы фактически вы выводили ее на лету.


    Ах, зачем же мы на вы? Давайте ж выкопаем закопаем топор войны и выкопаем стакан брудершафта!

    М>float const C_per_F = (100-0)/(C100_in_F-C0_in_F); // 5./9.


    М>зачем все это, если вы уже знаете, что оно 5.9 ?


    Какая разница, хардкодить коэффициент и выводить точку кипения, или хардкодить точку кипения и выводить коэффициент?
    Но лучше всего хардкодить опорные точки — например, в кельвинах. А то у нас получится слишком много зависимых пар — всех со всеми.

    М>при всем уважении я не могу сказать, что ваш код обладает преимуществами перед решением с использованием "магических констант". если на то пошло, то у вас _все_ неправильно. абсолютно. имена -- на свалку. переписать в обобщенном виде, где есть шкала А и Б с ключевыми отметками в двух точках. тогда однажды написанный код будет переводить не только градусы, но мили, литры, аршины и все-все-все.


    Вот ведь глупость написал, чисто, чтоб поспорить?

    Поскольку у нас две формулы — туда и обратно, — то параметры в них появятся дважды.
    Да ещё и в неявном виде.

    Либо придётся извращаться примерно таким способом:

    где dir принимает значения 1 (C->F) и -1 (F->C)

    Куда и как подставлять параметры для обобщённых пересчётов — сам поймёшь.

    М>в _вашей_ реализации имена переменных не отражают _подлинной_ сути. в контексте обсуждения копипасты -- это актуально.


    Ещё как отражают. В отличие от загадочного делителя 2.
    Перекуём баги на фичи!
    Re: что нельзя делать никогда
    От: minorlogic Украина  
    Дата: 19.12.13 17:57
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?



    S>Ваши варианты?


    Нелья зарекаться не делать чегонить никогда.
    ... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
    Ищу работу, 3D, SLAM, computer graphics/vision.
    Re[5]: что нельзя делать никогда
    От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
    Дата: 20.12.13 14:30
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Код должен быть простым и понятным безо всяких диффов. Ваш Кэп.


    А узнавать про изменения от версии к версии, в каментах штоле ? Или запретить такую активность ?
    Re[8]: что нельзя делать никогда
    От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
    Дата: 20.12.13 14:32
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>>>Он простой и понятный.


    S>>Если ты предлагаешь использовать для его анализа дифф — очевидно, что нет.


    Диф нужен не для анализа кода, а для анализа изменений в коде. Как можно получить изменения без дифа — решительно неясно.
    Re: утверждение
    От: Pavel Dvorkin Россия  
    Дата: 22.12.13 12:43
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?


    Каково бы ни было правило (кроме уж совсем тривиальных), всегда найдется ситуация, в которой сделать с точностью до наоборот будет лучшим решением.
    With best regards
    Pavel Dvorkin
    Re[5]: что нельзя делать никогда
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 23.12.13 07:05
    Оценка:
    Здравствуйте, vnp, Вы писали:
    vnp>А вот такого я не встречал. Пример можно?
    См. тж "ряд Тейлора"

    vnp>Выдыхай... что-нибудь соответствующее какой-нибудь физической реальности, желательно.

    А что тут непонятного — это какое-то нелинейное вычисление, аппроксимированное при помощи случайных совпадений. Там поди ещё и реинтерпретация float k как целочисленного.

    Просто про замену div 2 на shr 1 знают все, а про аппроксимации плаваюшего 1/sqrt(x) целочисленным делением — не все.
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re: что нельзя делать никогда
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 23.12.13 07:13
    Оценка: +1 :)
    Здравствуйте, stronk2, Вы писали:

    S>Ваши варианты?

    Нет вариантов, юный падаван. http://rsdn.ru/forum/humour/1600906.1
    Автор: Sinclair
    Дата: 19.01.06
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[2]: что нельзя делать никогда
    От: stronk2  
    Дата: 30.12.13 03:42
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Нет вариантов, юный падаван. http://rsdn.ru/forum/humour/1600906.1
    Автор: Sinclair
    Дата: 19.01.06


    На вопрос обиженных учеников: "а как ее добиться?", ты говоришь: "никогда не делайте то-то".
    Похоже, юный падаван здесь не я
    Re[3]: что нельзя делать никогда
    От: Erop Россия  
    Дата: 30.12.13 09:56
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Похоже, юный падаван здесь не я

    Ну не дорос ещё, бывает...
    Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
    Re[4]: что нельзя делать никогда
    От: stronk2  
    Дата: 30.12.13 11:01
    Оценка:
    Здравствуйте, Erop, Вы писали:

    S>>Похоже, юный падаван здесь не я

    E>Ну не дорос ещё, бывает...

    Интересно, нерелевантные ответы — это здесь такая местная мода?
    Re[5]: что нельзя делать никогда
    От: Erop Россия  
    Дата: 30.12.13 11:43
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Интересно, нерелевантные ответы — это здесь такая местная мода?

    Ты такой умный, и даже знаешь такие сложные слова, как "нерелевантные"!!!
    Странно, что ты не можешь усмотреть при этом простой логической связи...
    Хотя, конечно, теоретически, есть возможность, что всё таки попроще, и ты неверно употребил умное слово, значение которого знаешь нетвёрдо...
    Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
    Re[6]: что нельзя делать никогда
    От: AlexRK  
    Дата: 30.12.13 13:06
    Оценка:
    Здравствуйте, Sinclair, Вы писали:

    S>Просто про замену div 2 на shr 1 знают все, а про аппроксимации плаваюшего 1/sqrt(x) целочисленным делением — не все.


    Кармак точно знает.
    Re[6]: что нельзя делать никогда
    От: stronk2  
    Дата: 30.12.13 16:30
    Оценка:
    Здравствуйте, Erop, Вы писали:

    E>Странно, что ты не можешь усмотреть при этом простой логической связи...


    Если тебе показалось, что там есть логическая связь, то у тебя фатальные проблемы с логикой.
    Re[7]: что нельзя делать никогда
    От: Sinclair Россия https://github.com/evilguest/
    Дата: 31.12.13 04:39
    Оценка:
    Здравствуйте, AlexRK, Вы писали:
    ARK>Кармак точно знает.
    Да, я как раз хотел упомянуть, что это в его стиле, но уже отправил сообщение
    Уйдемте отсюда, Румата! У вас слишком богатые погреба.
    Re[7]: что нельзя делать никогда
    От: Aikin Беларусь kavaleu.ru
    Дата: 31.12.13 06:05
    Оценка: +1 :)
    Здравствуйте, stronk2, Вы писали:

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

    Логическую связь "там" видят минимум 55 человек на форуме (судя по оценкам). Повод задуматься.

    СУВ, akava
    Re[8]: что нельзя делать никогда
    От: stronk2  
    Дата: 31.12.13 07:06
    Оценка:
    Здравствуйте, Aikin, Вы писали:

    A>Логическую связь "там" видят минимум 55 человек на форуме (судя по оценкам). Повод задуматься.


    "Миллиарды мух не могут ошибаться"? (С)
    Истина — не демократия.
    Re[9]: что нельзя делать никогда
    От: Aikin Беларусь kavaleu.ru
    Дата: 31.12.13 09:56
    Оценка: +1
    Здравствуйте, stronk2, Вы писали:

    S>"Миллиарды мух не могут ошибаться"? (С)

    S>Истина — не демократия.
    Я даже не знаю что ответить.

    С наступающим новым годом, чтоли. Давайте жить дружно. Главное ведь гармония.


    СУВ, akava
    Re: что нельзя делать никогда
    От: Muxa  
    Дата: 31.12.13 12:10
    Оценка:
    S>Ваши варианты?
    goto и табы/пробелы были?
    Re[2]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 31.12.13 13:26
    Оценка: :))) :))) :)
    Здравствуйте, Muxa, Вы писали:

    S>>Ваши варианты?

    M>goto и табы/пробелы были?

    "Никогда не мешайте goto с табами"
    The God is real, unless declared integer.
    Re: что нельзя делать никогда
    От: lxa http://aliakseis.livejournal.com
    Дата: 14.03.14 20:08
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?


    Символы 101D0-101FF в коде можно считать однозначно плохими.
    Re[2]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 15.03.14 05:32
    Оценка:
    Здравствуйте, lxa, Вы писали:

    S>>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?

    lxa>Символы 101D0-101FF в коде можно считать однозначно плохими.

    Почему? Пора расширять возможные символы в языках программирования (как минимум в операторах), и заведомо не похожие на ASCII знаки могут помочь в этом.
    The God is real, unless declared integer.
    Re[3]: что нельзя делать никогда
    От: NeoCode  
    Дата: 15.03.14 06:59
    Оценка:
    Здравствуйте, netch80, Вы писали:

    S>>>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?

    lxa>>Символы 101D0-101FF в коде можно считать однозначно плохими.

    N>Почему? Пора расширять возможные символы в языках программирования (как минимум в операторах), и заведомо не похожие на ASCII знаки могут помочь в этом.


    Если бы их на всех клавиатурах еще наносили, то возможно А так — я вообще считаю что только ASCII.
    Re: что нельзя делать никогда
    От: gandjustas Россия http://blog.gandjustas.ru/
    Дата: 16.03.14 10:13
    Оценка:
    Здравствуйте, stronk2, Вы писали:

    S>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?


    Однозначно плохо писать такие посты.
    Re[4]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 17.03.14 11:46
    Оценка:
    Здравствуйте, NeoCode, Вы писали:

    S>>>>Какие вещи в коде можно считать однозначно плохими и нельзя использовать никогда и ни при каких условиях?

    lxa>>>Символы 101D0-101FF в коде можно считать однозначно плохими.

    N>>Почему? Пора расширять возможные символы в языках программирования (как минимум в операторах), и заведомо не похожие на ASCII знаки могут помочь в этом.


    NC>Если бы их на всех клавиатурах еще наносили, то возможно А так — я вообще считаю что только ASCII.


    Авторы APL с Вами не согласны.
    Вопрос присутствия на клавиатурах решается множеством методов.
    The God is real, unless declared integer.
    Re[5]: что нельзя делать никогда
    От: NeoCode  
    Дата: 18.03.14 14:40
    Оценка:
    Здравствуйте, netch80, Вы писали:

    N>Авторы APL с Вами не согласны.

    N>Вопрос присутствия на клавиатурах решается множеством методов.

    Только все они кривые.
    Необходимо присутсвие на ВСЕХ клавиатурах. И возможность редактирования в любом текстовом редакторе, а не только в специальной IDE. Насколько я знаю, стандарт POSIX определяет "Переносимый набор символов", куда входят 103 символа, гарантированно существующие во всех раскладках для любых языков (ASCII и управляющие символы). Идеальным вариантом было бы расширение стандарта POSIX до 128 символов и одновременное расширение стандарта UNICODE, заключающееся в том, что незадействованным 25 кодам можно назначить какие-нибудь наиболее полезные символы из UNICODE. Стрелки, дополнительные скобки, наиболее важные математические операции, которых нет в ASCII. Тогда был бы шанс, что производители клавиатур подключились бы и нанесли эти дополнительные коды на буквенные клавиши. Но боюсь, поезд уже ушел...
    Re[6]: что нельзя делать никогда
    От: netch80 Украина http://netch80.dreamwidth.org/
    Дата: 11.05.14 05:54
    Оценка:
    Здравствуйте, NeoCode, Вы писали:

    N>>Авторы APL с Вами не согласны.

    N>>Вопрос присутствия на клавиатурах решается множеством методов.
    NC>Только все они кривые.
    NC>Необходимо присутсвие на ВСЕХ клавиатурах. И возможность редактирования в любом текстовом редакторе, а не только в специальной IDE.

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

    NC> Насколько я знаю, стандарт POSIX определяет "Переносимый набор символов", куда входят 103 символа, гарантированно существующие во всех раскладках для любых языков (ASCII и управляющие символы). Идеальным вариантом было бы расширение стандарта POSIX до 128 символов и одновременное расширение стандарта UNICODE, заключающееся в том, что незадействованным 25 кодам можно назначить какие-нибудь наиболее полезные символы из UNICODE. Стрелки, дополнительные скобки, наиболее важные математические операции, которых нет в ASCII. Тогда был бы шанс, что производители клавиатур подключились бы и нанесли эти дополнительные коды на буквенные клавиши. Но боюсь, поезд уже ушел...


    Я не верю в расширение собственно физического поля стандартных клавиатур. Возможно переназначение — например, мне нафиг не сдался дополнительный цифровой блок (и на лаптопе, где места меньше, я бы предпочёл стрелочный блок, а не цифровой). Сделать режим, где все эти стрелки имеют другое назначение — вот на это я категорически согласен.
    The God is real, unless declared integer.
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.