powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / "Стиль" кодирования - как правильно?
37 сообщений из 37, показаны все 2 страниц
"Стиль" кодирования - как правильно?
    #36493326
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Псевдокод:
1.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function func(param) {
	if (condition) {
		result_inner = dosmth();
		if (condition_over_result_inner) {
			result_inner2 = dosmth2();
			if (condition_over_result_inner2) {
				result = true;
			} else {
				result = false;
			}
		} else {
			result = false;
		}
	} else {
		result = false;
	}
	return result;
}
2.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function func(param) {
	result = true;
	if (!condition) {
		result = false;
	}
	if (result) {
		result_inner = dosmth();
		if (!condition_over_result_inner) {
			result = false;
		}
	}
	if (result) {
		result_inner2 = dosmth2();
		if (!condition_over_result_inner2) {
			result = false;
		}
	}
	return result;
}
3.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function func(param) {
	if (!condition) {
		return false;
	}
	result_inner = dosmth();
	if (!condition_over_result_inner) {
		return false;
	}
	result_inner2 = dosmth2();
	if (!condition_over_result_inner2) {
		return false;
	}
	return true;
}

Как правильнее? Почему?
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493334
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

Код: plaintext
1.
2.
function func(param) {
return (condition && dosmth() && dosmth2());
}
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493343
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mozok,

во-первых,
Код: plaintext
1.
2.
function func(param) {
  return (condition && condition_over_result_inner && condition_over_result_inner2);
}
,

во-вторых, если condition_over_result_inner - не односложное условие, состоящее, например, из (result_inner < 0 or result_inner > 5), а dosmth() - ресурсоемкая функция, то в вашем примере получится напрасная трата ресурсов
Код: plaintext
1.
2.
function func(param) {
  return (condition && (dosmth() <  0  or dosmth() >  5 ) && condition_over_result_inner2);
}
из-за двух вызовов оной. Чем дальше - тем больше будет тратиться лишних ресурсов.

Я думаю я достаточно четко описал в примерах, чтобы понимать о чем я спрашиваю. Если информации недостаточно - скажите, добавлю.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493420
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

да ладно вам, уже и пошутить нельзя :).
Вообще, в данном случае выбор за вами. Сам предпочитаю вариант 3.
Почему? Потому что он наглядно демонстрирует модульность метода, видно все этапы алгоритма.
Мой бывший начальник предпочитал вариант 2, не любил много return'ов.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493437
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mozok,

раньше сам использовал 3ий вариант. Потом что-то где-то прочитал и стал предпочитать 1ый вариант. Вот теперь не могу найти, почему я это сделал. :) 2 вариант плох лишними проверками на каждом блоке кода, но зато код куда удобнее читать, чем портянку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
if {
  if {
    if {
      if {
        ...
      }
    }
  }
}

Вот интересно людей послушать, кто как делает и почему?
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493503
Фотография mccc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
табличный метод самый лучший, но корпеть придется
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493565
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mccc,

табличный - это первый? можете вкратце объяснить, почему?
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493574
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Детский вопрос. Тем не менее.

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

Во вторых, выбор зависит от используемого языка и возможностей.

В 3х - пофигу, лишь бы было читаемо и одинаково (почти) по всей программе.

В 4х - неплохо почитать чужой код (библиотеки там, еще чего н. большое).
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493600
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Вариант 3 неудобен в случаях, когда требуется ручная очистка (удалить память, закрыть файл).

Ага. Поэтому на восьмой день, хорошенько отдохнув, Бог создал RAII :).
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493623
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mozok, зависит от языка.

Можем на досуге подискутировать на тему автоуничтожения, например в деструкторах, а особенно gargage коллектором взаимозависимых объектов. Или, например, циклически зависимых.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493643
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

Мне 3-й нравится - читабельный и букаф немного. Сам именно в таком стиле делаю.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493693
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для чистоты обсуждения примем за истину то, что во всех подходах ресурсы будут правильно освобождены и само исполнение полностью эквивалентно по результату.

Есть ли фундаментальная разница в оптимизации подобных конструкций интерпретатором (PHP и др.) или компилятором (C++, C#, Java и др.), в зависимости от используемого "стиля" 1/2/3?
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493751
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym
...
Как правильнее? Почему?Иногда даже так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function func(param) {
	if (!condition) {
		goto  fail;
	}
	result_inner = dosmth();
	if (!condition_over_result_inner) {
		goto fail;
	}
	result_inner2 = dosmth2();
	if (!condition_over_result_inner2) {
		goto fail;
	}
	return true;
fail:
// Mожет быть освобождение ресурсов и/или запись в лог файл
        return false;
}
Эта форма бывает удобна в частности при отладке, так как уменьшает количество
точек прерывания, которые нужно установить, чтобы исследовать что происходит в случае "fail", если ошибка возникает нерегулярно и проявляется только после какого-то периода работы в "реальных" условиях. Вообще-то выбор формы зависит от того пишется ли данный кусок программы сразу или появляется в результате "эволюции", а также от условий "написания". Не помню откуда: "... Извини, что написал тебе это длинное письмо - у меня не было времени написать короче."
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36493985
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я правильно понимаю, что никакой разницы, кроме эстетичности и удобства, нет?
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36494022
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
an0nymЯ правильно понимаю, что никакой разницы, кроме эстетичности и удобства, нет? главное - удобство.

удобство комментирования блоков кода.
удобство выставления точек прерывания.
удобство понимания чужого кода.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36494051
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNose,

да мне в принципе в любом из трех вариантов удобно кодировать...

Всё таки - кроме удобства и субъективного "мне это нравится" есть разница?
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36494105
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
программы уже давно пишутся для людей, а не для компиляторов. Так что просто поставьте себя на место другого человека, который видит код в первый раз и напишите его так, что-бы алгоритм работы был бы максимально читабелен и понятен.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36494168
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old,

это всё понятно. Я никогда в жизни код а-ля
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function func() {
  if (smth) {
    goto p1;
  }

  p3:
  if (smth3) {
    goto p4;
  }
  
  end:
  return true;

  p1: 
  if (smth2) {
    goto p3;
  }
  
  p4:
  if (smth3) {
    goto end;
  }
}
писать не буду.

Вышеупомянутые подходы же кажутся мне хорошо читабельными. Поэтому интересно: при прочих равных (при равной читабельности) что лучше?
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36494329
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymЯ правильно понимаю, что никакой разницы, кроме эстетичности и удобства, нет?
не согласен про эстетику. в данном конкретном случае вариант 3 наиболее удобочитаемый и "легкоусваяемый".
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36494363
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymВышеупомянутые подходы же кажутся мне хорошо читабельными. Поэтому интересно: при прочих равных (при равной читабельности) что лучше?вариант 1 не является удобным ни с точки зрения написания, ни с точки зрения дальнейшей модернизации, ни с точки зрения последующего чтения. достаточно появиться одной-двум секциям else, как код превратится в совершенно непонятные макароны.
В этом смысле, подход 2 и 3 практически идентичны, различия - в личных предпочтениях. Мне, к примеру, более по душе вариант 3, а иногда приходится пользоваться подходом, предложенным avb1003, к примеру, при написании хранимок на TSQL 2000.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36494427
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*безнадежным голосом* Так всё таки компилятору есть разница?
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36494555
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym*безнадежным голосом* Так всё таки компилятору есть разница?

*не менее безнадежно*

Есть разница, компилятор, интерпретатор либо компилятор в байт код. Разница в 1, 10 либо 1.3 раза соответственно (условно).

Интерпретатор - чем меньше парсить текста, тем быстрее. Остальным пофигу.

А есть еще люди, которым этот код читать - это важнее всего.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36494585
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym*безнадежным голосом* Так всё таки компилятору есть разница?в общем случае, нет. Не думай за компилятор, пусть лучше он думает за тебя ;-)) пиши так, чтобы было понятно тебе и окружающим, используй профайлер, если найдёшь, что именно разница в таком написании условных операторов, тогда и оптимизируй. пиши для людей, а не для компилятора, в общем. Тут это уже говорили, впрочем.
ЗЫ. настоятельно рекомендую для просветления.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36494626
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychиспользуй профайлер, если найдёшь, что именно разница в таком написании условных операторов, тогда и оптимизируй.
ЗЫ. настоятельно рекомендую для просветления.
Да я надеялся, может кто-то уже до меня профайлер заюзал. :( То что люди пишут, я до создания топика знал. :)
ЗЫ. Почитаю, спасибо.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36494802
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymДа я надеялся, может кто-то уже до меня профайлер заюзал. :( на псевдокоде? хорошая шутка, смешная
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36494924
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych,

ну вы же понимаете, что подобные конструкции встречаются у каждого программиста, причем на любом ЯП. :)
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36495030
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymegorych,

ну вы же понимаете, что подобные конструкции встречаются у каждого программиста, причем на любом ЯП. :)вот поэтому общих рекомендаций "с точки зрения компилятора" быть и не может. с точки зрения человека - общие рекомендации озвучены, следуйте им и будет хорошо.
ЗЫ профайлер не используется "в общем случае": для каждой программы, на каждом языке, на каждой аппаратной платформе, и для каждой ОС, в своей среде использования, будут разные показатели производительности. Только это и можно сказать про "общий случай" профилирования ))
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36495739
Реалист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymGgg_old,

это всё понятно. Я никогда в жизни код а-ля
....
писать не буду.

Вышеупомянутые подходы же кажутся мне хорошо читабельными. Поэтому интересно: при прочих равных (при равной читабельности) что лучше?

Ваш код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
function func() {
  if (smth) {
    goto p1;
  }

  p3:
  if (smth3) {
    goto p4;
  }
  
  end:
  return true;

  p1: 
  if (smth2) {
    goto p3;
  }
  
  p4:
  if (smth3) {
    goto end;
  }
}

Легко упрощается до:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function func() {
  if (smth) {
    if (smth2) {
      if (smth3) {
        return true;
      }
    }
  }
  return false;
}

Мне кажется, любое предложение можно довести до абсурда. ;-)))
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36495755
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реалист,

харе уже к примерам придираться. :)
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36495759
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реалист,

и кстати код с goto упрощается еще легче: function func() {return true;}
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36495766
Реалист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

Я не сторонник goto, НО я категорически против его НЕ использования по идеологическим соображениям (ну типа, религия не позволяет) ;-))
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36495767
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реалист,

не, я не фанатик. Хотелось просто узнать технические подробности, плюс и минусы каждого из подходов. Например, человек упомянул табличный метод, а я в сети ничего толком найти не смог. :(
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36495777
Реалист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

Все очень просто.
1. Стиль КОДИРОВАНИЯ должен быть понятным.
2. Стиль ОФОРМЛЕНИЯ кода должен БЫТЬ.

В первом пункте нужно указать, что ОПТИМИЗАЦИЕЙ кода будет заниматься компилятор ;-)
А в общем случае - не важно, КАК написана программа, главное, правильно ли она делает то, что ей нужно делать.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36495787
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymРеалист,

не, я не фанатик. Хотелось просто узнать технические подробности, плюс и минусы каждого из подходов. Например, человек упомянул табличный метод, а я в сети ничего толком найти не смог. :(
Давай не технические, которым грош цена, а психологические. Например, четыре спички ты сразу увидишь, не считая. Уже пять - ты будешь раскладывать на 2+3 или 4+1. Короче, понятно к чему я клоню. Больше 4-х вложенностей, хоть ты тресни, быть не должно. Не прочитается человеком. Даже сам через месяц забудешь и придётся соображать что к чему. Я совершенно однозначно выбираю 3-й вариант с ретурном.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36495815
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и знал, что надо было у Сишников тему в разделе создавать. :)
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36495831
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymТак и знал, что надо было у Сишников тему в разделе создавать. :)
Ну и что они сказали бы? Можно подумать, что сюда сишники не заходят.
...
Рейтинг: 0 / 0
"Стиль" кодирования - как правильно?
    #36495857
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergean0nymТак и знал, что надо было у Сишников тему в разделе создавать. :)
Ну и что они сказали бы? Можно подумать, что сюда сишники не заходят.
Они больше любят технические подробности.
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / "Стиль" кодирования - как правильно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]