Почему VB.net такой многословный? Можно ли обрезать жир? - PullRequest
2 голосов
/ 09 декабря 2008

Становятся ли языки более многословными по мере взросления? Такое ощущение, что каждая новая версия VB.net получает больше синтаксиса. Можно ли обрезать немного жира, как ключевое слово "тусклый"? C # также чувствует, что он получает больше синтаксиса с версии 1.

Ответы [ 16 ]

17 голосов
/ 09 декабря 2008

C #, конечно, получил больше синтаксиса, но таким образом, что меньше многословно.

Практически каждая функция в C # 3.0 позволяет вам делать больше с меньшим количеством кода.

17 голосов
/ 09 декабря 2008

Это идиома VB. У всех языков есть идиома, и есть много, которые идут для многословного и изложенного. Спасибо твоим счастливым звездам, что ты не WRITING IN COBOL.

C # развился из C-подобных языков, и в традиции C ценится краткость и краткость, отсюда и скобки, && и ||, int, а не integer, регистрозависимый код в нижнем регистре , В идиоме VB длинные самоочевидные ключевые слова хороши, краткие ключевые слова или загадочные символы - плохие, следовательно, MustInherit, Dim blah as Integer и нечувствительность к регистру, но с тенденцией превращать в заглавные буквы ваши ключевые слова. По сути, придерживайтесь идиомы языка, который вы используете. Если вы используете (или должны использовать) VB, то привыкайте к многословию - это намеренно.

9 голосов
/ 09 декабря 2008

Нет ничего плохого в многословии, на самом деле это часто может быть очень хорошей вещью.

Я полагаю, у вас есть значимые имена переменных? Описательные имена методов? Тогда почему существует проблема с вводом 'end if' вместо '}'. На самом деле это совсем не проблема, если уж на то пошло, краткость C # - это больше проблема, пытаясь вписаться как можно больше в как можно меньше символов - это означает, что его труднее читать, а не легче.

8 голосов
/ 09 декабря 2008

Хорошо ... это стыдно признать, но мне нравится использование Dim в VB.NET. Да, это не служит конкретному использованию, которое не может быть выведено из использования «As» позже ... но для меня, есть нечто абсолютно «бьющее вас по голове», очевидное в том, что заявления объявлений начинаются с Dim. Это означает, что когда кто-то просматривает код, ему даже не нужно думать о том, что означают эти утверждения, даже на микросекунду. В таких языках, как C #, декларации достаточно очевидны, но если вы просто просматриваете их, вам может понадобиться рассмотреть их на мгновение (даже самое короткое из них).

Есть что-то "очень очевидное" в том, что в начале некоторых операторов есть специальное ключевое слово. В VB.NET назначения начинаются с «Dim», а вызовы методов (могут) начинаться с «Call», давая им своего рода «единообразие левой стороны», которое уже есть у If, For и других конструкций: вы получаете наименьшую суть о том, что происходит с этой линией, просто взглянув на ее начало. Их использование почти эквивалентно левому столбцу, который вы можете просмотреть очень быстро и получить представление о том, что происходит на каком-то базовом уровне («Хорошо, мы заявляем о вещах здесь ... мы призываю к другим вещам здесь ... ").

Это может показаться иррациональным или даже глупым для некоторых людей ... но оно делает цель каждого утверждения достаточно явной, чтобы чувствовать себя быстрее (по крайней мере, для меня) при просмотре ... особенно при просмотре незнакомого кода, написанного другими.

Полагаю, в конце концов, все сводится к "разным штрихам для разных людей". Я не против набрать еще три символа для этой очевидной цели.

6 голосов
/ 09 декабря 2008

Многословие и читаемость часто идут рука об руку. В последнее время я стал бояться слова «Элегантный», потому что оно обычно переводится как «Весело, но не сразу читается»

Конечно, человек, пишущий код, всегда говорит: «Ну, это БОЛЬШЕ читабельного для меня, потому что оно короче / элегантнее.

это дерьмо. Всегда легче читать что-то более явное, если у вас не так много проблем с чтением, что вам понадобится два часа, чтобы пройти роман Дика и Джейн.

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

Как программисту НАМНОГО веселее писать элегантные выражения, но через некоторое время я смотрю на "элегантность" других и даже на собственную "элегантность", и я изменю ее на что-то более явное удобочитаемым и надежным, когда я понимаю, что, хотя писать было весело, я просто потратил больше времени на его чтение / отладку, чем сначала на запись.

С другой стороны, DIM просто глуп:)

6 голосов
/ 09 декабря 2008

VB.NET великолепен, он приносит больше ясности в коде.

Например, мне нравится тот факт, как вы можете описать, каков ваш конец.

Конец, пока против Конец за против} End if vs}

И действительно, многословие не является проблемой при печати из-за интеллигентности.

5 голосов
/ 09 декабря 2008

Я немного не в себе.

Мне нравится то, что все называют многословным. Разве никто никогда не задумывался над тем, что у нас нет множественных вложенных скобок ни в каких естественных языках (например, в английском)? На самом деле вложенные скобки действительно нуждаются в соглашении об отступах, чтобы сделать их читаемыми вообще. В естественных языках мы используем подробные предложения и множественные предложения, чтобы избежать или хотя бы объяснить многослойные скобки.

Также в определенном смысле я бы не сказал, что vb имеет намного больше синтаксиса, чем c # вообще. На самом деле в определенном блоке кода не так много лексических токенов, как в c # (не так ли?). Он имеет примерно такой же синтаксис, как и в c #, просто имеет более длинные синтаксические токены, например, «End Sub» вместо «}». Для большинства частей синтаксической сантехники версия VB будет просто более типизированной (если вы отреклись от intelisense), также '}' является неоднозначным по сравнению с 'End Sub', поскольку это также означает 'End If' и целую загрузку других вещей , Это не делает его более кратким в определенном смысле. В коде все еще остается то же количество токенов, но из меньшего подмножества более маркеров курсивных токенов. Но разные токены в C # имеют разные значения в зависимости от контекста, что требует, чтобы вы по-прежнему имели этот вложенный уровень в уме, когда читаете код, чтобы получить, например, какой код блока вы читаете, если вы потеряете свой место, хотя конец блока кода может быть виден, вам, возможно, придется посмотреть вверх, чтобы увидеть начало блока кода. Даже там, где это не так, && действительно лучше, чем AndAlso?

Dim. Полагаю, это бесполезный дополнительный лексический токен по сравнению с c #, но, по крайней мере, он согласуется с linq, vb не нужна команда var. Я не могу думать ни о каких других кандидатах на отбивную. Может быть, у меня нет воображения.

Я уверен, что кто-то придет и скажет мне, как я не прав :) В любом случае, я думаю, это связано с личными предпочтениями.

4 голосов
/ 09 декабря 2008

Тогда C # должен избавиться от ";" в конце каждой линии фрика :)

По умолчанию должен быть простой способ перехода к такой «Новой строке» вместо «;» если вы хотите исключить такие 2 оператора в одной строке, вам нужно использовать разделитель, такой как «:» или «;»

2 голосов
/ 03 апреля 2010

ОК, я старый программист на C, который пришел в .Net через C #, и сейчас я работаю в VB.Net Я должен сказать, что сначала я был потрясен многословием, но вернулся к C # для меня немного, я должен признать, что мне больше нравится VB.Net.

Я могу написать VB-код, который читается лучше и менее загадочно, и это действительно не требует гораздо больше места (особенно если вы поместите все фигурные скобки C # в свою строку) Также редактор в Visual Studio позаботится о большей части многословия для меня.

Мне нравится, как Dim X As List(Of SomeType) читает, а не List<sometype> X

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

2 голосов
/ 09 декабря 2008

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

У VB есть несколько хороших коротких путей. Например, процедуры преобразования. Например, CInt, CStr и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...