Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Получение имени LastFiles Добавлено: 27.04.09 15:38  

Автор вопроса:  Sergey

Ответить

  Ответы Всего ответов: 27  

Номер ответа: 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С.

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

Ответить

Номер ответа: 18
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #18 Добавлено: 28.04.09 19:26
ну давай.. спорь дальше.. доказывай, что это круто!

Ответить

Номер ответа: 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
 ;DateTime
 8 байт
 От 0:00:00 (полночь) 1 января 0001 года до 11:59:59 вечера 31 декабря 9999 года.
 
Decimal
 ;Decimal
 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 (число двойной точности с плавающей запятой)
 ;Double
 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 :)

И на самом деле ты делал это совершенно зря.

Поясню почему.

Когда ты пишешь
  1. Dim Count = 10

компилятор анализирует тип значения, которое ты присваиваешь переменной. И на основании этого значения и определяет тип переменной. Поэтому у переменной Count будет тип не Variant (которого кстати в .NET нету), и не Object (который есть, и который бы тут использовался без Local Type Inference), а Int32 (потому что константа 10 имеет тип Int32). Если не веришь, попробуй обратиться к этому типу, и ты увидишь что даже среда разработки показывает его тип как Int32, и в InteliSense дает члены, которые присутствуют в классе Int32 (а не Object)

То есть это 2 абсолютно аналогичные записи с точки зрения платформы .NET
  1. Dim Count As Integer = 10
  2. Dim Count = 10


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

Aston, ты просто путаешь понятия "неявная типизация" и "отсутствие типизации, позднее связывание"
Против позднего связывания, я, разумеется, всеми руками и ногами против, поскольку это работает медленнее, и дает возможность наделать кучу ошибок, которые проявятся только во время выполнения программы (если бы переменные были тпизированы, явно или не явно, то такие ошибки были бы обнаружены и исправлены еще пока ты пишешь код).


Да не круто это. Любой код должен быть написан так, чтоб другой программист мог легко его разобрать, так как может кому то надо будет переделать твою программу или доделать А с не явными переменными такого не будет и можешь даже не спорить. И ещё явное объявление переменных - является хорошим тоном в программировании.

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

Ответить

Номер ответа: 21
Автор ответа:
 Aston



ICQ: 214-179-991 

Вопросов: 42
Ответов: 272
 Профиль | | #21 Добавлено: 28.04.09 21:49
Ну вот честно говорю не знал, что при присвоении переменной значения, компилятор анализирует тип значения и определят тип переменной. Но начал подумывать об этом, после фразы:
Готов поставить $100 для доказательства этой фразы?
Теперь буду знать.
А если честно то да я имел ввиду отсутствие типизации и позднее связывание.
И по сути неявные переменные при присвоении им значения сразу - являются явными, так как явными их делает сам компилятор. Просто явные и не явные - это только разница в стиле написания.

Ответить

Номер ответа: 22
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #22
Добавлено: 28.04.09 22:45
в функциональных языках программирования практически никогда не задают тип переменной , и ничего живут люди...

Ответить

Номер ответа: 23
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #23 Добавлено: 29.04.09 00:21
ты говоришь о всяких языках типа php,javascript и т.д? Ты всерьез считаешь возможность положить в одну и ту же переменную число,строку,таблицу бд,экземпляр класса а также дерьмо на лопате преимуществом? Ты это называешь жизнью? А ты спроси у этих людей сколько у них уходит времени на отладку и отлов багов.. будешь приятно удивлен(не в проекте на сотню строк а в реальном проекте на несколько десятком метров исходников). Надеюсь ты не ставишь php & NET в один ряд языков что бы так сравнивать?

Ответить

Номер ответа: 24
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #24 Добавлено: 29.04.09 00:37
EROS, php и javascript это не функциональыне языки программирования :)

Ответить

Номер ответа: 25
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #25
Добавлено: 29.04.09 09:32
А ты спроси у этих людей сколько у них уходит времени на отладку и отлов багов.. будешь приятно удивлен(не в проекте на сотню строк а в реальном проекте на несколько десятком метров исходников). Надеюсь ты не ставишь php & NET в один ряд языков что бы так сравнивать?


Ну никак не могу сказать, что это связано с типизацией, в php обычно рулят ассоциативные массивы, в которых все обзывается так, что не запутаешься.
$row_files=mysql_fetch_array($res_files) or die(mysql_error()); Эта строчка вряд ли вызовет поиск ошибки часами.
НО, ведь эти языки совсем для другой цели. PHP (несмотря на огромное количество других возможностей), PERL - являются обработчиками текста.

PHP - Hypertext Preprocessor — «PHP: препроцессор гипертекста»

Practical Extraction and Report Language «практический язык для извлечения данных и составления отчётов».

А JavaScript тут вообще говорить не о очем, скрипт он и есть скрипт.

Очень интересно как Skywalker будет писать на них Windows,*nix и любое другое приложение с интерактивным интерфейсом... Я бы посмотрел

Ответить

Номер ответа: 26
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #26
Добавлено: 29.04.09 15:36
ты повторяешь ошибку EROS'a, то что ты перечислил это НЕ функциональные языки.
также функциональные языки не предназначены для создания GUI, хотя это возможно, есть даже видео где чувак в риалтайме играется с опенжл и выглядит это очень круто

Ответить

Номер ответа: 27
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #27
Добавлено: 29.04.09 15:47
Почитал, согласен недопонимал что такое функциональные языки, так что спорить пока не буду)))
но приведу цитату из википедии
В качестве основных свойств функциональных языков программирования обычно рассматриваются следующие:

    * краткость и простота;
    * строгая типизация;
    * модульность;
    * функции — объекты вычисления;
    * чистота (отсутствие побочных эффектов);
    * отложенные (ленивые) вычисления.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам