Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> условный оператор 
:(
    Опции темы
 
Какой из ниже предложеных вариантов лучше с вашей точки зрения?
первый вариант [ 13 ]  [61.90%]
воторой вариант [ 8 ]  [38.10%]
Всего проголосовавших: 21
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
nmn
Дата 7.1.2009, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



довольно часто замечал запись вида:
Код

if(someConditionalExpression)
 anotherVariable=true;
  else anotherVariable=false;

причем в совершенно различных источниках
зачем так? по идее ведь anotherVariable=someConditionalExpression и красивее и эффективнее?

первый вариант:
Код

if(someConditionalExpression)
 anotherVariable=true;
  else anotherVariable=false;


второй вариант:
Код

anotherVariable=someConditionalExpression;


Это сообщение отредактировал(а) nmn - 8.1.2009, 19:19
PM Skype   Вверх
Данкинг
Дата 7.1.2009, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Не понял, а что не так? Если a=b, то c=истина, иначе c=ложь. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Partizan
Дата 7.1.2009, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



nmn, первый вариант просто читается легче...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Void
Дата 8.1.2009, 00:05 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 2
Всего: 173



Цитата(Partizan @  8.1.2009,  01:44 Найти цитируемый пост)
nmn, первый вариант просто читается легче... 

Гм. Я привык, что первый вариант иначе как индусским кодом не называют.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Partizan
Дата 8.1.2009, 00:21 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



Void, окей...сравним два варианта:

1)
Код

if (!string.IsNullOrEmpty(str) && (Model.Enabled || forceVisibility))
   this.Visible = true;
else
   this.Visible = false;


2)

Код

this.Visible =  !string.IsNullOrEmpty(str) && (Model.Enabled || forceVisibility);



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
nmn
Дата 8.1.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



второй лучше ? smile
PM Skype   Вверх
Partizan
Дата 8.1.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



ничего против второго варианта не имею...но лично мне первый вариант кажется более читабельным...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Bishop
Дата 8.1.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 3.6.2005
Где: Минск, Беларусь

Репутация: 3
Всего: 16



nmn, вы абсолютно правы, вторая запись "красивее и эффективнее" и понятнее.

Partizan, скажите пожалуйста что первично в приведённом вами отрывке: установка свойства или проверка условия? Отражает ли условие в данном месте реальное ветвление алгоритма?

Я ничего против первого варианта не имею, но в его отношении прав Void smile
PM WWW ICQ   Вверх
Partizan
Дата 8.1.2009, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



Bishop, 
ну вот первый вариант...
я читаю код строка за строкой:
если строка не пустая и модель активна или выставлен флажок, то показать, в противном случае - скрыть...

второй вариант

visible = о.О...

конечно и то и другое - читается...я говорю о том, что первый вариант - более очевиден =)

Bishop,  против второго также ничего не имею =) Про красоту и эффективность даже не спорю =) Тут в общем то и спорить не о чем)



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
PashaPash
Дата 8.1.2009, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 9
Всего: 49



Поддерживаю Partizan-а. Первая запись читабельнее. А еще она позволяет легко поставить отдельные breakpoint-ы на каждую ветку, например, поймать момент когда this.Visible выставляется в false и пропустить его в дебаге.

Это сообщение отредактировал(а) PashaPash - 8.1.2009, 19:11


--------------------
PM MAIL WWW   Вверх
QryStaL
Дата 8.1.2009, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 10
Всего: 32



Цитата(nmn @  7.1.2009,  23:14 Найти цитируемый пост)
по идее ведь anotherVariable=someConditionalExpression и красивее и эффективнее?

чем эффективнее?

Обычно код нужно поддерживать. Если это трудно делать (как во втором случае), то его красота сомнительна.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
nmn
Дата 8.1.2009, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Цитата(PashaPash @ 8.1.2009,  18:10)
Поддерживаю Partizan-а. Первая запись читабельнее. А еще она позволяет легко поставить отдельные breakpoint-ы на каждую ветку, например, поймать момент когда this.Visible выставляется в false и пропустить его в дебаге.

ну если только ради брейпоинта подстраивать код, по моему это неразумно
ведь существует такое понятие как условный брейкпоинт, вот туда эти условия и записать
PM Skype   Вверх
PashaPash
Дата 9.1.2009, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 9
Всего: 49



Цитата(nmn @  8.1.2009,  23:50 Найти цитируемый пост)

ну если только ради брейпоинта подстраивать код, по моему это неразумно
ведь существует такое понятие как условный брейкпоинт, вот туда эти условия и записать 

Сравни тык по F9 с выделением условия и вписыванием его в нужное поле (про которое тут 50% народа не догадывается). А вообще 1-й вариант читабельнее потому что он именно "читается" как "если срока непустая и blah-blah-blah то сделать видимым, иначе - невидимым". А первый вариант - "установить видимость непустоте строки или истинности blah-blah-blah". В спеках и вообще при описании поведения обычно используют первую формулировку. Первый вариант легче дописывается до случая когда нужно сделать еще что-то только в одной ветке, например:
Код

if (!string.IsNullOrEmpty(str) && (Model.Enabled || forceVisibility))
{
   this.Visible = true;
   this.Focus();
}
else
{
   this.Visible = false;
}


З.Ы. я проголосовал за 2, тупо промахнулся smile

Это сообщение отредактировал(а) PashaPash - 9.1.2009, 01:01


--------------------
PM MAIL WWW   Вверх
kemiisto
Дата 9.1.2009, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Partizan, ты уж извини, но ты чушь написал. Первый вариант как раз таки скрывает суть происходящего. Одной булевой перемонной (anotherVariable) присваивается значение другой (someConditionalExpression). Что и написано во втором варианте. If statement нужен для конструкций вида: 
Код

if(someConditionalExpression)
{
  ...
}
else
{
  ...
}

где ... - есть некий набор инструкций.
 
Цитата(PashaPash @  8.1.2009,  17:10 Найти цитируемый пост)
А еще она позволяет легко поставить отдельные breakpoint-ы на каждую ветку, например, поймать момент когда this.Visible выставляется в false и пропустить его в дебаге.

Если не секрет, что ты в приведённом пример отлаживать собрался? a = b?  smile 

Цитата(Void @  7.1.2009,  22:05 Найти цитируемый пост)
Гм. Я привык, что первый вариант иначе как индусским кодом не называют. 

Void, поддерживаю! smile Типичный примерчик индусского кода.

Добавлено через 1 минуту и 35 секунд
PashaPash, вот сейчас ты и подтвердил мои слова. Не о том немного думаете. Взгляните внимательнее на обсуждаемый код.

Это сообщение отредактировал(а) kemiisto - 9.1.2009, 01:01


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Void
Дата 9.1.2009, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 2
Всего: 173



kemiisto, всё же определённая логика в этом есть, когда речь идёт о свойствах. component.Visible = booleanVar — это не просто присвоение, но и сопутствующие действия. Кстати, если считать значение этого свойства на следующей строчке, оно не обязательно будет равно только что присвоенному.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0683 ]   [ Использовано запросов: 24 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.