Loading...
o_ignatov avatar o_ignatov 54 Точки

Предлагам да спрем с употребата на "var" в Proramming Fundamentals лекциите

Здравейте,

Не знам дали само при мен е така или и други имат затруднения с разбирането на кода, но много често в лекциите и упражненията се пише var-това, var-онова и всичко работи.

Проблема е, че понякога в това var живеят плашещи неща като (IOrderedEnumerable) и липсата на яснота с нищо не помага, особено на хората които искат да научат Java.

За момента само Калин се стреми да го избягва и затова искам да обърна внимание и на Наков и Владо.

var написан във foreach или за деклариране на обекти или променливи върнати от LINQ прави нещата доста тегави и невъзможни за възприемане без debugger.

Лично аз никъде не пиша var кода си, дори за примитивни типове и очевидни инициализации.

Тагове:
4
Предложения и проблеми 07/07/2017 17:30:06
o_ignatov:
Отговора на Наков изчерпва темата
nakov avatar nakov SoftUni Team Trainer 5295 Точки
Best Answer

Ползването на type inference (var в езика C#) е тенденция във всички съвременни езици за програмиране.

Съгласен съм, че при някои ситуации това затруднява четенето на кода, така че трябва да се ползва в повечето случаи, но не във всички. Взимам си бележка, че студентите са начинаещи и това ги затруднява, така че ще го ползвам по-малко. Колкото до напълното му спиране, не съм съгласен. Това ще затрудни писането на кода и ще направи демонстрациите на живо по-дълги и скучни. Търсенето на верния тип понякога отнема минути, особено при по-заплетена структура. Не мисля, че някой има полза от четенето и писането на изрази като IGrouping<IKeyValuePair<string, IEnumerable<int>>.

На всички показвам и натъртвам, че в съвременните среди за разработка (включително във Visual Studio) при посочване на променливата с мишката веднага се вижда нейният тип. Това е техника, която трябва да стане навик на пишещите код. Ще продължавам да я показвам по-често.

Наков

11
07/07/2017 18:50:21
RoYaL avatar RoYaL Trainer 6849 Точки

Ако имаш ReSharper и посочиш с мишката върху думата var ти излиза tooltip където пише какъв е типът. Според мен е безсмислено да пишеш IOrderedEnumerable orderedCollection = collection.OrderBy(x => x.Smth); Нищо конкретно и полезно не ти носи този тип данни, освен че е сортирана колекция, което би трябвало да е пределно ясно, че е сортирана, щом си и казал OrderBy :)

2
icowwww avatar icowwww 2791 Точки

Ако си се заглеждал, ReSharper сам ти казва да замениш типа на променливата с var( един вид твоя помошник ти казва, да напишеш var вместо името на типа). Аз пиша с var от Programing Basics и досега не ми се е случвало да ми е трудно да се сетя какъв е типа данни. Ако все пак не знаеш какъв е типа може да задържиш мишката върху var и ще ти я изпише

1
07/07/2017 18:50:18
Terziyski avatar Terziyski 54 Точки

Здравей , преди време и аз мислех също като тебе , но сега съм на мнение , че е добре да се използва var-а . От Programming Basic имах лектор , който държеше да се използват типовете данни такива каквито са и да се избягва var-a.  , но за това ниво беше ОК .

Когато нещо не ми става ясно просто местя мишката над самият var и виждам какво се случва и отделно правя дебъгване :)

 

0
sevgin0954 avatar sevgin0954 557 Точки

Без var кода е по четим вар според мен трябва да се ползва само за дългите неща.  Като. IGrouping<IKeyValuePair<string, IEnumerable<int>>

0
RoYaL avatar RoYaL Trainer 6849 Точки

Според мен става по-нечетимо, ако смесваш var и типове. За мен трябва да си избере човек едното и да го ползва.

1
g.stoyanov avatar g.stoyanov 776 Точки

Според мен е много удобно използването на var при писането на кода, но има и редица недостатъци като:

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

Малко по голям код на практика става нечетим извън студиото! Факт!

Известни проблеми при по-къстъм мърджване на кода!

Невъзможност да се използва null integer (int? ... = null).

и т.н....

Според мен в зависимост от проекта може да се използват най-различни комбинации. От доста четим код избягвайки напълно var... минавайки през 90% var... до 100% var. Всичко зависи от практиките във фирмата и дадения случай. 

Но според мен един начинаещ програмист на .NET трябва да навлезе в езика като на 100% избягва var-а!!!

1
danslavov avatar danslavov 22 Точки

И аз съм за използването на var най-малкото понеже досега не ми е пречел да рапознавам типа данни. А предимствата просто са неоспорими. Към примерите от останалите мнения мога примерно да добавя нещо, което постоянно се използва на нивото Fundamentals - представи си, че правиш няколко foreach на вложени речници. Можеш да си загубиш десетина минути само за да напишеш типовете за всеки цикъл и в крайна сметка тази информация дори няма да ти трябва. Много по-полезно е да именуваш променливите по логичен начин, който създава правилни асоциации у човека, вместо да се опитваш да следиш конвенциите, които компютърът (образно казано) разбира най-добре.

1
o_ignatov avatar o_ignatov 54 Точки

Хайде сега си представи за момент, че някой ден започнеш работа и ти дадат да рефакторираш код написан навсякъде с var. Доста ще се озориш и ще ти отнеме повече от 10 мин.

0
09/07/2017 14:55:51
flareset avatar flareset 140 Точки

Ама то не само трябва да се спре да се ползва, но и трябва да се забрани, защото това "вар" е наблагозвучно, че чак дразнещо. ::D:Шегата настрана, аз с моя мижав опит досега си мислих, че  var не се ползва в C#, а само в Javascript. Не знам в другите приложения как е, но в Unity, при C# може да се ползва само за деклариране на локална променлива в метод, а важните променливи се декларират в началото на класа и там трябва да се посочи какъв тип са. В методите, поне  досега, не ми се е налагало да ползвам локални промеливи за нещо различно от някой брояч, таймер или for цикъл. И като се замисля, ако заменя int-овете и float-овете с var-ове и да слагам мишката върху променливата, ще ми е по-бавно, отколкото веднага да виждам какъв тип е, не само като механично движение, но и като допълнителна работа за мозъка да помисли "сега тоя "вар" int ли е или нещо друго". (Mежду другото, не знам дали е от плъгина на Unity, но и без ReSharper показва вида на променливите във Visual Studio). То не че в един метод имам кой знае колко дълъг код, повечето са до 10 реда, но поне засега не виждам смисъл да ползвам var. Като напредна с материала, пак ще помисля по въпроса.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.