LINUX.ORG.RU

читаемость кода


0

0

Все три case`a функционально одинаковы, во 2-м и 3-м варианте
методы SendData() и RecvData() объединены в один SendRecv().
Какой код обладает наибольшей читаемостью? Мое мнение: 
1. много if/else
2. много точек выхода
3. оптимизация в ущерб читаемости

CmdStatus = CMD_EXEC;
switch(Command)
{
...
case CommandSetMotoHourLimit:
	if(SendData() == RET_OK)
	{
		if(RecvData() == RET_OK)
		{
			if(Data.Command == CommandReceived)
				CmdStatus = CMD_COMPLETE;
			else
				CmdStatus = CMD_ERROR;
		}
		else
			CmdStatus = CMD_ERROR;
	}
	else
		CmdStatus = CMD_ERROR;
	break;

case 1000:
	if(SendRecv() != RET_OK)
	{
		CmdStatus = CMD_ERROR;
		break;
	}
	if(Data.Command != CommandReceived)
	{
		CmdStatus = CMD_ERROR;
		break;
	}
	CmdStatus = CMD_COMPLETE;
	break;

case 1001:
	if(SendRecv() == RET_OK && Data.Command == CommandReceived)
		CmdStatus = CMD_COMPLETE;
	else
		CmdStatus = CMD_ERROR;
	break;
}
★★

Мне больше последний нравится

Zmacs
()

При данных условиях 3-ий вариант выглядит предпочтительнее, да и читается неплохо.

MiracleMan ★★★★★
()
Ответ на: комментарий от bugmaker

читаемость!=краткость, хотя и тоже сестра таланта :)

KIV
()

Хочешь реально повысить читабельность кода - меняй язык. Из этого же уродца при любых перестановках и кривляниях ничего не выйдет.

anonymous
()
Ответ на: комментарий от anonymous

>Хочешь реально повысить читабельность кода - меняй язык. Из этого же уродца при любых перестановках и кривляниях ничего не выйдет.

Может еще и глаза сменить??? :):):)

KIV
()
Ответ на: комментарий от Sectoid

> в варианте 3 возможны проблемы из-за порядка вычисления выражений в if'е...

Невозможны. Это оговорено стандартом.

watashiwa_daredeska ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.