Страница: 1 | 2 |
|
Вопрос: Получение имени LastFiles
|
Добавлено: 27.04.09 15:38
|
|
Номер ответа: 16 Автор ответа: EROS
Вопросов: 58 Ответов: 4255
|
Профиль | | #16
|
Добавлено: 28.04.09 18:58
|
Using Connection = CreateConnection
А может у меня там OleDbConnection возвращается вместо SqlConnection? Я что, должен все это в голове держать? Наведи мышкой.. найди где она объявлена.. бред сивой кобылы! Что еще я должен сделать, плюнуть через плечо 3 раза и произнести псалм чтоб узнать тип переменной? На какой хер мне весь этот геморрой нужен, когда можно просто вглянуть радом на тип переменной!
Brand, с тобой спорить - это все равно что против ветра ссать, все равно мокрый будешь.. Сам же понимаешь, что ерунду говоришь, что читабельность кода с такой нотацией - никакая.. но нет,блин.. все равно будет спорить!
Ну поставит, а что это изменит? Код так и будет работать.
Конечно будет.. кто спорит.. тогда почему бы тебе не назвать переменную Using, System, For и т.д... Снова будешь спорить что ты все верно сделал и именно так надо делать?? Или просто наберешься смелости и признаешь что был не прав?
Ну что там легче читать и писать?
Да то и легче... Dim myVariable = MyFunction() И что мне теперь делать? Искать что это за функция и все ее перегрузки, чтобы узнать что она мне возвращает? Или наводить на нее мышкой?? ))) Да будет тебе известно я мышой практически вообще не пользуюсь, предпочитаю горячие клавиши..
имхо.. такая форма объявления переменной - для лохов, которые не в состоянии явно указать тип, и уповают на компилятор который сам за них все додумает, потому что нихера не понимают что они пишут.. очередная блевотина от MS для новичков и студентов чтоб могли на коленке сварганить очередной говнокод для сессии!
Ответить
|
Номер ответа: 17 Автор ответа: Artyom
Разработчик
Вопросов: 130 Ответов: 6602
|
Профиль | | #17
|
Добавлено: 28.04.09 19:19
|
EROS пишет:
А может у меня там OleDbConnection возвращается вместо SqlConnection
Если OleDbConnection, или там какой-нибудь OracleConnection, ничего не изменится. Код как работал так и будет работать.
Ты правда думаешь что программист может "забыть, с чем же именно он работает - с Ораклом, SQL Server или MySQL?
EROS пишет:
мышкой.. найди где она объявлена.. бред сивой кобылы! Что еще я должен сделать, плюнуть через плечо 3 раза и произнести псалм чтоб узнать тип переменной? На какой хер мне весь этот геморрой нужен, когда можно просто вглянуть радом на тип переменной!
Если ты не видишь где объявлена переменная, то прийдется или наводить мышкой, или крутить туда где она объявлена.
Повторюсь, если по названию переменной нельзя определить какой она имеет тип, если по названию функции нельзя понять что именно она возвращает - сам понимаешь чья это проблема, и компилятор здесь уже не при чем.
EROS пишет:
Конечно будет.. кто спорит.. тогда почему бы тебе не назвать переменную Using, System, For и т.д... Снова будешь спорить что ты все верно сделал и именно так надо делать?? Или просто наберешься смелости и признаешь что был не прав?
Ок, я понял о чем ты говорил. В свое оправдание могу сказать что я скопировал код из первого поста, и не трогал названия переменных. Хотя в названии локальных переменных именем классах ничего катастрофического не вижу, хотя согалсен что так делать не стоит (в С# кстати этим все постоянно болеют, правда там обычно название переменной в другом регистре пишут).
EROS пишет:
Да то и легче... Dim myVariable = MyFunction() И что мне теперь делать?
Согласись, многое меняется когда вместо myVariable и MyFunction фигурируют MyConnection и CreateConnection?
EROS пишет:
Да будет тебе известно я мышой практически вообще не пользуюсь, предпочитаю горячие клавиши..
Аналогично
EROS пишет:
имхо.. такая форма объявления переменной - для лохов, которые не в состоянии явно указать тип, и уповают на компилятор который сам за них все додумает, потому что нихера не понимают что они пишут.. очередная блевотина от MS для новичков и студентов чтоб могли на коленке сварганить очередной говнокод для сессии!
Не согласен
Для студентов, которым на завтра надо диплом защищать сделаны разные фичи типа Late Bdinging, возможность вообще не объявлять переменные. Да и вообще .NET не для студентов, это для реальных пацанов. Студентам всякий VBA, паскали, прологи, 1С.
Я не хочу чтоб компилятор что-то сам за меня додумал. Я просто хочу чтоб он выполнил за меня ту работу которую я от него ожидаю.
Ответить
|
Номер ответа: 19 Автор ответа: Aston
ICQ: 214-179-991
Вопросов: 42 Ответов: 272
|
Профиль | | #19
|
Добавлено: 28.04.09 19:51
|
Да не круто это. Любой код должен быть написан так, чтоб другой программист мог легко его разобрать, так как может кому то надо будет переделать твою программу или доделать А с не явными переменными такого не будет и можешь даже не спорить. И ещё явное объявление переменных - является хорошим тоном в программировании. И легко разобрать когда 1 или 2 переменные объявлены неявно а если их десятки?
И вот взял табличку с МСДН 2008 - и разве размер у них не разный?
Тип Visual Basic
Структура типа в среде CLR
Номинальная занимаемая память
Диапазон значений
Boolean
Boolean
Зависит от платформы реализации
True или False
Byte
Byte
1 байт
От 0 до 255 (беззнаковый).
Char (один знак)
Char
2 байта
От 0 до 65535 (беззнаковый).
Date
 ateTime
8 байт
От 0:00:00 (полночь) 1 января 0001 года до 11:59:59 вечера 31 декабря 9999 года.
Decimal
 ecimal
16 байт
От 0 до +/–79 228 162 514 264 337 593 543 950 335 (+/–7,9... E + 28) † без десятичной запятой; от 0 до +/–7,9228162514264337593543950335 с 28 разрядами справа от десятичной запятой;
наименьшее ненулевое число — это +/–0,0000000000000000000000000001 (+/–1E–28) †
Double (число двойной точности с плавающей запятой)
 ouble
8 байт
От –1,79769313486231570E+308 до –4.94065645841246544E–324 † для отрицательных значений;
от 4,94065645841246544E–324 до 1,79769313486231570E+308 † для положительных значений
Integer
Int32
4 байта
От –2 147 483 648 до 2 147 483 647 (знаковый)
Long (длинное целое число)
Int64
8 байт
От –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 (9,2... E+18 †) (знаковый)
Object
Object (класс)
4 байта на 32-разрядной платформе
8 байт на 64-разрядной платформе
В переменной типа Object может храниться значение любого типа.
SByte
SByte
1 байт
От –128 до 127 (знаковый)
Short (короткое целое число)
Int16
2 байта
От –32 768 до 32 767 (знаковый)
Single (число одиночной точности с плавающей запятой)
Single
4 байта
От –3,4028235E+38 до –1,401298E–45 † для отрицательных значений;
от 1,401298E–45 до 3,4028235E+38 † для положительных значений
String (строка переменной длины)
String (класс)
Зависит от платформы реализации
От 0 до приблизительно 2 миллиардов знаков в кодировке Юникод.
UInteger
UInt32
4 байта
От 0 до 4 294 967 295 (беззнаковый).
ULong
UInt64
8 байт
От 0 до 18 446 744 073 709 551 615 (1,8... E+19 †) (знаковый)
Пользовательский тип (структура)
 наследует от ValueType)
Зависит от платформы реализации
Каждый член структуры имеет диапазон, определяемый его типом данных и не зависящий от диапазонов других членов.
UShort
UInt16
2 байта
От 0 до 65 535 (беззнаковый
И при неявном объявлении переменная принимает тип вариант, которая занимает 16 байт - но те слова что я сказал правда, по крайней мере так было в старых версиях ВБ, мож они сделали что теперь переменные подстраиваются под код хз.
Ответить
|
Номер ответа: 20 Автор ответа: Artyom
Разработчик
Вопросов: 130 Ответов: 6602
|
Профиль | | #20
|
Добавлено: 28.04.09 20:12
|
Aston, не нужно было мне копировать эту вырезку из документации Я могу во сне назвать сколько байт занимает любой тип данных в .NET и SQL Server
И на самом деле ты делал это совершенно зря.
Поясню почему.
Когда ты пишешь
компилятор анализирует тип значения, которое ты присваиваешь переменной. И на основании этого значения и определяет тип переменной. Поэтому у переменной Count будет тип не Variant (которого кстати в .NET нету), и не Object (который есть, и который бы тут использовался без Local Type Inference), а Int32 (потому что константа 10 имеет тип Int32). Если не веришь, попробуй обратиться к этому типу, и ты увидишь что даже среда разработки показывает его тип как Int32, и в InteliSense дает члены, которые присутствуют в классе Int32 (а не Object)
То есть это 2 абсолютно аналогичные записи с точки зрения платформы .NET
- Dim Count As Integer = 10
- Dim Count = 10
После компиляции будет получен абсолютно идентичный IL-код, и говорить о том что что-то будет работать медленнее, быстрее, будет занимать больше или меньше памяти просто неуместно.
Aston, ты просто путаешь понятия "неявная типизация" и "отсутствие типизации, позднее связывание"
Против позднего связывания, я, разумеется, всеми руками и ногами против, поскольку это работает медленнее, и дает возможность наделать кучу ошибок, которые проявятся только во время выполнения программы (если бы переменные были тпизированы, явно или не явно, то такие ошибки были бы обнаружены и исправлены еще пока ты пишешь код).
Да не круто это. Любой код должен быть написан так, чтоб другой программист мог легко его разобрать, так как может кому то надо будет переделать твою программу или доделать А с не явными переменными такого не будет и можешь даже не спорить. И ещё явное объявление переменных - является хорошим тоном в программировании.
Ну раузмеется поначалу такой код может быть читать непривычно, с этим не спорю.
Ответить
|
Страница: 1 | 2 |
Поиск по форуму