Указывать типы переменных или PHP-style

Указывать типы переменных
15
Нейтральная
сторона
2
PHP-style
3
Прежде чем писать комментарии или выбрать сторону вы должны авторизироваться!

23-12-2011 23:44 +2

Холивар на тему «тип задан в переменной vs тип определяется значением»?

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

В крайнем случае переменная может быть типа Variant как в Дельфи: запись с вариантными полями, первое поле указывает на тип. Вроде и переменная типизированная, и её тип может меняться.

1 комментарий
cherepets 23-12-2011 23:50 0

opera.rulez, Да. Об этом.
Просто я в добровольно-принудительном порядке отправился от универа на еще одну косячную работу, где надо под памятником Кириллу и Мефодию писать на пхп за копейки.

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

24-12-2011 01:06 +1

Пишу на PHP, но всегда подстраховываюсь, используя оператор тождественного сравнения (=== вместо ==).

0 комментариев
24-12-2011 03:51 0

пхп-стайл хорош для быдлокодеров - всё работает как ни напишешь.
но с ростом проекта растут и проблемы / неудобства связанные с сабжем. не говоря уже про ООП.

3 комментария
Slimmer 24-12-2011 12:50 +1

fhfh, всё работает как ни напишешь
да ну...
это удобно, только если ты к этому привык и по-другому никогда не писал.
Как может быть удобно, когда ты каждый раз не знаешь, что делаешь - сложение или конкатенацию. Каждый раз делать to_string или to_number тоже, по-моему не очень удобно...

cherepets 24-12-2011 12:55 0

Slimmer, Подтверждаю. Не всегда удобно.

Пытаюсь выбрать третий символ из строки с числом (типа 0001010101), означающей набор прав. А оно внезапно может нули из начала урезать, ибо в числе они не нужны и вместо 0 я получаю 1.

Полная херня.

Slimmer 24-12-2011 13:08 0

cherepets, ну да, вроде логически просто, а отлаживаешь на каждом шаге.

24-12-2011 13:50 0

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

1 комментарий
NightmareZ 29-01-2012 20:44 0

Razor, Ну иногда можно тип явно не указывать и он будет выводиться из контекста, например. При этом, само собой, будет строгая типизация.

Это я просто вариант привёл.

24-12-2011 04:15 +1

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

Например, глупо бы было в шарпе писать так
MySomeLongNameClass obj = new MySomeLongNameClass();
когда можно
var obj = new MySomeLongNameClass();

с другой стороны глупо бы было писать в нём же так
var obj = SomeMethod();
вместо
MySomeLongNameClass obj = SomeMethod();
потому что в первом случае с первого взляда не видно, какого типа переменная obj.

Но при этом в окамле нет смысла писать так
let f x: int = x + x
вместо
let f x = x + x

А вот в плюсах проще написать
for (auto it = vec.begin(); it != vec.end(); ++it)
чем
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++t)
и не плодить тайпдефы для одного цикла... хоть это и не кошерно.

Вобщем, я в нейтрал.

0 комментариев