Expand Cut Tags

No cut tags
norian: (Default)
[personal profile] norian
Уровень качества

Когда картёжник создаёт карту проблемной области и улучшает её, он должен понять, когда остановиться. Это относится ко всем уровням разработки. Обычно существует решение, которое существенно проще других и очевидно минимально. Может быть несколько способов его выражения, но они обозначают по сути одно и то же. Хотя высказывания типа "вы это узнаете, когда увидите" несомненно правильны, они не говорят, куда смотреть.

В качестве примера можно привести функцию для Win32 из книги Рихтера, которая, несмотря на попытку достичь максимальной ясности, не была упрощена в силу принятых соглашений:

DWORD WINAPI SecondThread (LPVOID lpwThreadParm) {
BOOL fDone = FALSE;
DWORD dw;

while (!fDone) {
// Wait forever for the mutex to become signaled.
dw = WaitForSingleObject(g_hMutex, INFINITE);

if (dw == WAIT_OBJECT_0) {
// Mutex became signalled.
if (g_nIndex >= MAX_TIMES) {
fDone = TRUE;
} else {
g_nIndex++;
g_dwTimes[g_nIndex - 1] = GetTickCount():
}

// Release the mutex.
ReleaseMutex(g_hMutex);
} else {
// The mutex was abandoned.
break;// Exit the while loop.
}
}
return(0);
}

Однако мы можем сделать это и достичь максимального уровня качества

DWORD TheThread(void *ThreadParm)
{
while(Index < MAX_TIMES &&
WaitForSingleObject(Mutex, INFINITE) == WAIT_OBJECT_0)
{
if (Index < MAX_TIMES)
Times[Index++] = GetTickCount():
ReleaseMutex(Mutex);
}
return(0);
}

Причём вместо

hThreads[0] = CreateThread(..., FirstThread, ...);
hThreads[1] = CreateThread(..., SecondThread, ...);

можно писать

hThreads[0] = CreateThread(..., TheThread, ...);
hThreads[1] = CreateThread(..., TheThread, ...);

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

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

norian: (Default)
Norian

January 2026

S M T W T F S
    1 2 3
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Page generated Jan. 4th, 2026 06:17 am
Powered by Dreamwidth Studios