Re[10]: Модульные тесты и "безопасные" языки - хорошо.
От: Vamp Россия  
Дата: 29.07.09 19:52
Оценка:
V>>Ну-ну. И что потом с этим ха квадрат делать? Он так и останется в памяти компьютера вещью в себе? В реальном мире программам приходится заниматься такими небезопасными вещами, как пользовательский ввод-вывод и даже! о черт! генерировать случайные числа.
C>Да что Вы говорите?! Не может быть!..
"Неприятный момент, да, Сысоев?" (С)
Да здравствует мыло душистое и веревка пушистая.
Re[8]: Модульные тесты и "безопасные" языки - хорошо.
От: Sheridan Россия  
Дата: 29.07.09 20:06
Оценка:
Hello, criosray, you write:

c> c>> Вы, уважаемый, за собой бы последили.

c> S>Да я вообще за ум взялся — Мамут вон даже поттвердит.
c> Держите крепче, а то убежит.

Хорошо, по твоим следам идти не буду. Буду покрепче держать.
avalon 1.0rc2 rev 282, zlib 1.2.3 (build date: 29.07.2009 22:36:12 MSD +04:00)(Qt 4.5.2)
Matrix has you...
Re[13]: Модульные тесты и "безопасные" языки - хорошо.
От: March_rabbit  
Дата: 30.07.09 07:44
Оценка:
Здравствуйте, Vamp, Вы писали:

C>>Корректное поведение... смешно. Ну покажите мне код, где такое поведение корректное.

V>A фиг ли скрывать?
V>
V>...
V>

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

C>>Я-то прекрасно знаю, как работает оператор присваивания и конструкция if — именно потому и говорю. В 9 из 10 случаев в С/С++ исходниках можно увидеть if (NULL == something) {} вместо if (something == NULL) {}. Это наверно от хорошей жизни, да?

V>За 11 лет — видел только в индусских рекомендациях. Это от индуизма.
а вот тут не согласен: расположение константы впереди защищает от описки, которую не сразу и заметишь.
Re[10]: Модульные тесты и "безопасные" языки - хорошо.
От: CreatorCray  
Дата: 30.07.09 08:50
Оценка:
Здравствуйте, Vamp, Вы писали:

CC>>Так нагляднее:

V>...
V>Во первых, лично мне запись в одну строчку нагляднее. Но у на свобода — если тебе так нагляднее, найди себе компилятор, который поддерживает такую запись, и пиши так.
Это любой С++0х компилятор позволяет
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Модульные тесты и "безопасные" языки - хорошо.
От: CreatorCray  
Дата: 30.07.09 08:50
Оценка:
Здравствуйте, criosray, Вы писали:

C>Вы будете сильно удивлены, когда узнаете ЧТО хреновые программисты пишут в комментариях.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: Модульные тесты и "безопасные" языки - хорошо.
От: CreatorCray  
Дата: 30.07.09 08:50
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Дудки! Тому, кто уверяет, что программировал на C++ аж 10 лет и продолжает нести восхитительную ахинею касательно этого же C++, проводить ликбез я не буду по принципиальным соображениям.

+10000!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Модульные тесты и "безопасные" языки - хорошо.
От: Игoрь Украина  
Дата: 30.07.09 08:53
Оценка:
Здравствуйте, criosray, Вы писали:

C>(подсказка: бесконечный цикл)


Запустил дебажную версию под 2008-ой студией, выдало диалог:

---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Error!

Program: E:\_projects\temp\сpp\Debug\сpp.exe
Module: E:\_projects\temp\сpp\Debug\сpp.exe
File:

Run-Time Check Failure #2 — Stack around the variable 'array' was corrupted.

(Press Retry to debug the application)
---------------------------
Abort Retry Ignore
---------------------------


Даже если и допустил оплошность, то этого вполне достаточно, чтобы сразу и поправить.
Re[12]: Модульные тесты и "безопасные" языки - хорошо.
От: CreatorCray  
Дата: 30.07.09 10:02
Оценка:
Здравствуйте, criosray, Вы писали:

C>>>>>if (i = n) {...}

C>>>Проблема в том, что это корректный синтаксис. Корректный синтаксис допускающий некорректное поведение — более чем причина, чтоб ругать язык.
V>>Это совершенно корректный синтаксис. И совершенно корректное поведение.
C>Корректное поведение... смешно. Ну покажите мне код, где такое поведение корректное.

Пфф!
TreeNode *node;
if (node = root.GetNode ("Foo"))
{
 node->...
 ...
}

if (node = root.GetNode ("Bar"))
{
 node->...
 ...
}



C>Я-то прекрасно знаю, как работает оператор присваивания и конструкция if — именно потому и говорю. В 9 из 10 случаев в С/С++ исходниках можно увидеть if (NULL == something) {} вместо if (something == NULL) {}. Это наверно от хорошей жизни, да?

Это далеко не в 9 из 10
Есть многие метры С++ сурсов и ни разу там такое не встречается.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[14]: Модульные тесты и "безопасные" языки - хорошо.
От: CreatorCray  
Дата: 30.07.09 10:02
Оценка: +2
Здравствуйте, March_rabbit, Вы писали:

C>>>Я-то прекрасно знаю, как работает оператор присваивания и конструкция if — именно потому и говорю. В 9 из 10 случаев в С/С++ исходниках можно увидеть if (NULL == something) {} вместо if (something == NULL) {}. Это наверно от хорошей жизни, да?

V>>За 11 лет — видел только в индусских рекомендациях. Это от индуизма.
M_>а вот тут не согласен: расположение константы впереди защищает от описки, которую не сразу и заметишь.
От описки защищает правильно настроенные опции компилятора
А константа впереди ломает глазки при чтении кода.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[13]: Модульные тесты и "безопасные" языки - хорошо.
От: criosray  
Дата: 30.07.09 10:25
Оценка: -5 :))) :))
Здравствуйте, CreatorCray, Вы писали:

C>>>>>>if (i = n) {...}

C>>>>Проблема в том, что это корректный синтаксис. Корректный синтаксис допускающий некорректное поведение — более чем причина, чтоб ругать язык.
V>>>Это совершенно корректный синтаксис. И совершенно корректное поведение.
C>>Корректное поведение... смешно. Ну покажите мне код, где такое поведение корректное.

CC>Пфф!

CC>
CC>TreeNode *node;
CC>if (node = root.GetNode ("Foo"))
CC>{
 node->>...
CC> ...
CC>}

CC>if (node = root.GetNode ("Bar"))
CC>{
 node->>...
CC> ...
CC>}
CC>


Вы так программируете? Тогда Вас надо гнать в шею за такой индусокод.
Re[14]: Модульные тесты и "безопасные" языки - хорошо.
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 30.07.09 13:22
Оценка:
Здравствуйте, criosray, Вы писали:

CC>>Пфф!

CC>>
CC>>TreeNode *node;
CC>>if (node = root.GetNode ("Foo"))
CC>>{
 node->>>...
CC>> ...
CC>>}

CC>>if (node = root.GetNode ("Bar"))
CC>>{
 node->>>...
CC>> ...
CC>>}
CC>>


C>Вы так программируете? Тогда Вас надо гнать в шею за такой индусокод.


Ну-ка, ну-ка. Назови хотя бы две любые проблемы этого кода.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[15]: Модульные тесты и "безопасные" языки - хорошо.
От: criosray  
Дата: 30.07.09 13:27
Оценка: +1 -4 :))) :)))
Здравствуйте, Геннадий Васильев, Вы писали:


CC>>>Пфф!

CC>>>
CC>>>TreeNode *node;
CC>>>if (node = root.GetNode ("Foo"))
CC>>>{
 node->>>>...
CC>>> ...
CC>>>}

CC>>>if (node = root.GetNode ("Bar"))
CC>>>{
 node->>>>...
CC>>> ...
CC>>>}
CC>>>


C>>Вы так программируете? Тогда Вас надо гнать в шею за такой индусокод.


ГВ>Ну-ка, ну-ка. Назови хотя бы две любые проблемы этого кода.

Достаточно одной — присваивание внутри выражения if ().
Re[15]: Модульные тесты и "безопасные" языки - хорошо.
От: VoidEx  
Дата: 30.07.09 13:41
Оценка: -2 :)))
Здравствуйте, Геннадий Васильев, Вы писали:

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


CC>>>Пфф!

CC>>>
CC>>>TreeNode *node;
CC>>>if (node = root.GetNode ("Foo"))
CC>>>{
 node->>>>...
CC>>> ...
CC>>>}

CC>>>if (node = root.GetNode ("Bar"))
CC>>>{
 node->>>>...
CC>>> ...
CC>>>}
CC>>>


C>>Вы так программируете? Тогда Вас надо гнать в шею за такой индусокод.


ГВ>Ну-ка, ну-ка. Назови хотя бы две любые проблемы этого кода.


Достаточно нуля проблем. Я свою точку зрения доказал. Гнать надо вас в шею за такой код.
Re[16]: Модульные тесты и "безопасные" языки - хорошо.
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 30.07.09 14:00
Оценка: +3 -1 :)
Здравствуйте, criosray, Вы писали:

C>>>Вы так программируете? Тогда Вас надо гнать в шею за такой индусокод.

ГВ>>Ну-ка, ну-ка. Назови хотя бы две любые проблемы этого кода.
C>Достаточно одной — присваивание внутри выражения if ().

А в чём проблема присваивания внутри выражения if? Вроде бы, всё понятно даже программисту на самом обыкновенном C.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[15]: Модульные тесты и "безопасные" языки - хорошо.
От: March_rabbit  
Дата: 30.07.09 14:00
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


C>>>>Я-то прекрасно знаю, как работает оператор присваивания и конструкция if — именно потому и говорю. В 9 из 10 случаев в С/С++ исходниках можно увидеть if (NULL == something) {} вместо if (something == NULL) {}. Это наверно от хорошей жизни, да?

V>>>За 11 лет — видел только в индусских рекомендациях. Это от индуизма.
M_>>а вот тут не согласен: расположение константы впереди защищает от описки, которую не сразу и заметишь.
CC>От описки защищает правильно настроенные опции компилятора
в смысле, очередной варнинг? Или запрет присвоения в условии?
Если ты про варнинг, то.... В нашем проекте этих варнингов столько, что новые часто не замечаются. Мозилла вся насквозь пропитана варнинговым кодом. Поэтому предупреждение — не выход.

CC>А константа впереди ломает глазки при чтении кода.

Это есть. С непривычки ломает. Потому сам практически не использую.
Re[14]: Модульные тесты и "безопасные" языки - хорошо.
От: March_rabbit  
Дата: 30.07.09 14:03
Оценка: -1
Здравствуйте, criosray, Вы писали:

C>Вы так программируете? Тогда Вас надо гнать в шею за такой индусокод.

а как должно быть? Типа так?

TreeNode *node;
node = root.GetNode ("Foo");
if (0 != node)
{
}

node = root.GetNode ("Bar");
if (0 != node)
{
}

?
Re[15]: Модульные тесты и "безопасные" языки - хорошо.
От: criosray  
Дата: 30.07.09 14:11
Оценка:
Здравствуйте, March_rabbit, Вы писали:

C>>Вы так программируете? Тогда Вас надо гнать в шею за такой индусокод.

M_>а как должно быть? Типа так?

M_>
M_>TreeNode *node;
M_>node = root.GetNode ("Foo");
M_>if (0 != node)
M_>{
M_>}

M_>node = root.GetNode ("Bar");
M_>if (0 != node)
M_>{
M_>}

M_>

M_>?

TreeNode *node = root.GetNode("Foo");
if (node != NULL)
{
}

node = root.GetNode("Bar");
if (node != NULL)
{
}
Re[16]: Модульные тесты и "безопасные" языки - хорошо.
От: CreatorCray  
Дата: 30.07.09 14:20
Оценка: 3 (1) +1
Здравствуйте, March_rabbit, Вы писали:

C>>>>>Я-то прекрасно знаю, как работает оператор присваивания и конструкция if — именно потому и говорю. В 9 из 10 случаев в С/С++ исходниках можно увидеть if (NULL == something) {} вместо if (something == NULL) {}. Это наверно от хорошей жизни, да?

V>>>>За 11 лет — видел только в индусских рекомендациях. Это от индуизма.
M_>>>а вот тут не согласен: расположение константы впереди защищает от описки, которую не сразу и заметишь.
CC>>От описки защищает правильно настроенные опции компилятора
M_>в смысле, очередной варнинг? Или запрет присвоения в условии?
M_>Если ты про варнинг, то.... В нашем проекте этих варнингов столько, что новые часто не замечаются. Мозилла вся насквозь пропитана варнинговым кодом. Поэтому предупреждение — не выход.
Ну, по хорошему в проекте должно стоять "Treat warning as error".

Что в общем то сразу отбивает охоту писать присвоения в if Так что проблема решается как бы сама собой.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[16]: Модульные тесты и "безопасные" языки - хорошо.
От: CreatorCray  
Дата: 30.07.09 14:20
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Достаточно нуля проблем. Я свою точку зрения доказал. Гнать надо вас в шею за такой код.

А ты, VoidEx, откуда вдруг нарисовался?
И какую это ты точку зрения доказал?
А не виртуал ли ты, мил человек?
Твой второй логин на RSDN часом не criosray?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[15]: Модульные тесты и "безопасные" языки - хорошо.
От: CreatorCray  
Дата: 30.07.09 14:20
Оценка: 3 (1)
Здравствуйте, March_rabbit, Вы писали:

Лично мне например нравится такой стиль:
TreeNode *node = root.GetNode ("Foo");
if (node)
{
}

node = root.GetNode ("Bar");
if (node)
{
}


Да, лично я предпочитаю не писать присвоение в условии. Но это вопрос стиля, мне так больше нравится.
Но и не считаю что присвоение в условии неправильно.

Зелёному новичку разумеется надо вбить в голову что присвоение в условии это полный капец и так делать нельзя. Во избежание. Ибо сдуру и по неопытности он наворотит говнокода.
Когда подрастёт — можно объяснить что иногда на самом деле так делать всё таки можно.
Впрочем когда подрастёт — сам должен понять.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.