Stuffcheck

Π‘Π»ΠΎΠ³ ΠΎ практичСском ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ² Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, систСмном Π΄ΠΈΠ·Π°ΠΉΠ½Π΅, инструмСнтах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ создании быстрых минималистичных Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Β· 2 ΠΌΠΈΠ½ чтСния Β· Π”ΠΆΠ΅Ρ„Ρ„ Π­Ρ‚Π²ΡƒΠ΄ Β· Coding Horror

Код ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ

Π“Π΄Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π³Ρ€Π°Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ самодокумСнтируСмым ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ пояснСниями

Π›ΡƒΡ‡ΡˆΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ ΠΊΠΎΠ΄Ρƒ β€” Ρ‚ΠΎΡ‚, Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ. Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ ясной Π·Π° счСт структуры ΠΈ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΠ΅Π½, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° сам ΠΊΠΎΠ΄ исчСрпал возмоТности самовыраТСния, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ пояснСния.

Π’ прСдисловии ΠΊ ΠΊΠ½ΠΈΠ³Π΅ Β«Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈ интСрпрСтация ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΒ» сформулирован Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡ… Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΈ лишь Π²ΠΎ Π²Ρ‚ΠΎΡ€ΡƒΡŽ β€” для машин, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ.

Π”ΠΎΠ½Π°Π»ΡŒΠ΄ ΠšΠ½ΡƒΡ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ эту идСю Π² эссС ΠΎ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ:

Π‘ΠΌΠ΅Π½ΠΈΠΌ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΊΡƒ: вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, сосрСдоточимся Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ людям, Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

Если ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² расчСтС Π½Π° ΠΊΠΎΠ»Π»Π΅Π³, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° компилятор, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² коммСнтариях Ρ€Π΅Π·ΠΊΠΎ сократится.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊΠ°ΠΊ ΠΊΠΎΡΡ‚Ρ‹Π»ΡŒ

Π’ΠΎΡ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-ΠΊΠΎΠ΄Π° ΠΈΠ· Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰Π΅ΠΉ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ систСмы:

float _x = abs(x - deviceInfo->position.x) / scale;
int directionCode;
if (0 < _x & x != deviceInfo->position.x) {
    if (0 > x - deviceInfo->position.x) {
        directionCode = 0x04 /*left*/;
    } else if (0 < x - deviceInfo->position.x) {
        directionCode = 0x02 /*right*/;
    }
}

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ /*left*/ ΠΈ /*right*/ ΠΌΠ°ΡΠΊΠΈΡ€ΡƒΡŽΡ‚ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈ нСвнятныС ΠΈΠΌΠ΅Π½Π°. ПослС Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΊΠΎΠ΄ становится самодостаточным:

static const int DIRECTION_RIGHT = 0x02;
static const int DIRECTION_LEFT = 0x04;
static const int DIRECTION_NONE = 0x00;

int oldX = deviceInfo->position.x;
int directionCode = (x > oldX) ? DIRECTION_RIGHT
                  : (x < oldX) ? DIRECTION_LEFT
                  : DIRECTION_NONE;

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ Π΄ΠΎ нуля, Π° ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΡΡ‚ΡŒ выросла. ΠžΡΠΌΡ‹ΡΠ»Π΅Π½Π½Ρ‹Π΅ константы ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² костылях.

Π“Π΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹

Бколько Π±Ρ‹ усилий ΠΌΡ‹ Π½ΠΈ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π»ΠΈ Π² Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³, сам ΠΏΠΎ сСбС ΠΊΠΎΠ΄ Π½Π΅ способСн ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ вСсь контСкст принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Как ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π» ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Macintosh Π”ΠΆΠ΅Ρ„ Раскин:

Код Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ написана ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹Π±Ρ€Π°Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ срСди дСсятка Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ умСстного коммСнтария, Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:

/* Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск оказался ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π‘ΠΎΠΉΠ΅Ρ€Π°-ΠœΡƒΡ€Π° Π½Π° Π½Π°ΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
   Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ поиск ΠΏΠΎ подстрокС, нСсмотря Π½Π° Π½Π΅Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ. */

Π’ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π°Π²Ρ‚ΠΎΡ€Ρƒ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания, Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ»Π³ΠΎΠ΄Π° поставит Π² Ρ‚ΡƒΠΏΠΈΠΊ всю ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

Код ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° вопрос Β«ΠΊΠ°ΠΊΒ» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ систСма. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос Β«ΠΏΠΎΡ‡Π΅ΠΌΡƒΒ» ΠΎΠ½Π° устроСна ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ. БохраняйтС этот баланс Π² повсСднСвной Ρ€Π°Π±ΠΎΡ‚Π΅.