සංකීර්ණ කේතය පැහැදිලි කරන අදහස් දැක්වීමේ වරද කුමක්ද?


242

බොහෝ අය කියා සිටින්නේ "අදහස් දැක්වීම් මගින් 'ඇයි' යන්න පැහැදිලි කළ යුතු නමුත් 'කෙසේද' යන්න නොවේ. තවත් සමහරු පවසන්නේ “කේතය ස්වයං ලේඛනගත විය යුතු” බවත් අදහස් දැක්වීම් හිඟ විය යුතු බවත්ය. රොබට් සී. මාටින් කියා සිටින්නේ (මගේම වචන වලට නැවත මුද්‍රණය කර ඇති) බොහෝ විට “අදහස් දැක්වීම නරක ලෙස ලියා ඇති කේතයට සමාව අයැදීම” බවයි.

මගේ ප්‍රශ්නය පහත දැක්වේ:

විස්තරාත්මක විවරණයක් සහිත සංකීර්ණ ඇල්ගොරිතමයක් හෝ දිගු හා කැටි කළ කේතයක් පැහැදිලි කිරීමේ වරද කුමක්ද?

මේ ආකාරයෙන්, වෙනත් සංවර්ධකයින් (ඔබ ද ඇතුළුව) එය කරන්නේ කුමක්දැයි වටහා ගැනීම සඳහා සමස්ත ඇල්ගොරිතම රේඛාවම රේඛාවෙන් කියවීම වෙනුවට, ඔබ සරල ඉංග්‍රීසියෙන් ලියා ඇති මිත්‍රශීලී විස්තරාත්මක විවරණය ඔවුන්ට කියවිය හැකිය.

මිනිසුන්ට පහසුවෙන් තේරුම් ගත හැකි වන පරිදි ඉංග්‍රීසි 'නිර්මාණය' කර ඇත. කෙසේ වෙතත්, ජාවා, රූබි හෝ පර්ල් නිර්මාණය කර ඇත්තේ මිනිස් කියවීමේ හැකියාව සහ පරිගණක කියවීමේ හැකියාව සමතුලිත කිරීම සඳහා වන අතර එමඟින් පෙළෙහි මානව කියවීමේ හැකියාව අඩපණ වේ. මිනිසෙකුට ඉංග්‍රීසි කෑල්ලක් වඩා වේගයෙන් තේරුම් ගත හැකිය, ඔහුට / ඇයට එකම අර්ථයකින් කේත කැබැල්ලක් තේරුම් ගත හැකිය (මෙහෙයුම සුළුපටු නොවන තාක් කල්).

එබැවින් අර්ධ වශයෙන් මිනිසුන්ට කියවිය හැකි ක්‍රමලේඛන භාෂාවකින් ලියා ඇති සංකීර්ණ කේත කැබැල්ලක් ලිවීමෙන් පසු, කේතයේ ක්‍රියාකාරිත්වය මිත්‍රශීලී හා තේරුම්ගත හැකි ඉංග්‍රීසියෙන් විස්තර කරන විස්තරාත්මක හා සංක්ෂිප්ත අදහස් දැක්වීමක් නොකරන්නේ මන්ද?

සමහරු "කේතය තේරුම් ගැනීමට අපහසු නොවිය යුතුය", "කාර්යයන් කුඩා කරන්න", "විස්තරාත්මක නම් භාවිතා කරන්න", "ස්පැගටි කේතය ලියන්න එපා" යැයි කියනු ඇත.

නමුත් එය ප්‍රමාණවත් නොවන බව අපි කවුරුත් දනිමු. මේවා හුදු මාර්ගෝපදේශ - වැදගත් හා ප්‍රයෝජනවත් ඒවා - නමුත් සමහර ඇල්ගොරිතම සංකීර්ණ බව ඔවුන් වෙනස් නොකරයි. එබැවින් ඒවා පේළියෙන් කියවන විට තේරුම් ගැනීමට අපහසුය.

එහි සාමාන්‍ය ක්‍රියාකාරිත්වය පිළිබඳ අදහස් කිහිපයක් සහිත සංකීර්ණ ඇල්ගොරිතමයක් පැහැදිලි කිරීම ඇත්තෙන්ම නරකද? අදහස් දැක්වීමක් සමඟ සංකීර්ණ කේතය පැහැදිලි කිරීමේ වරද කුමක්ද?


14
එය කැටි ගැසුනේ නම්, එය කුඩා කැබලිවලට නැවත ප්‍රතිනිර්මාණය කිරීමට උත්සාහ කරන්න.
වෝගන් හිල්ට්ස්

151
න්‍යාය අනුව, න්‍යාය සහ පුහුණුව අතර වෙනසක් නොමැත. ප්රායෝගිකව, ඇත.
ස්කොට් ලෙඩ්ලි

5
attmattnz: වඩාත් කෙලින්ම, ඔබ අදහස ලියන මොහොතේදී මෙම කේතය විසඳන ගැටලුවේ ඔබ ගිලී ඇත. ඊළඟ වතාවේ ඔබ සංචාරය කරන විට, ඔබට මෙම ගැටලුව සමඟ අඩු හැකියාවක් ඇත .
ස්ටීව් ජෙසොප්

26
ශ්‍රිතය හෝ ක්‍රමය කරන්නේ කුමක්ද යන්න එහි නමෙන් පැහැදිලි විය යුතුය. එය කරන්නේ කෙසේද යන්න එහි කේතයෙන් පැහැදිලි වේ. එය මේ ආකාරයෙන් සිදු කරන්නේ ඇයි, ඇල්ගොරිතම අවබෝධ කර ගැනීම සඳහා කියවිය යුතු කඩදාසි ආදිය මොනවාද?
එස්.කේ.-තර්කනය

11
පහත දැක්වෙන ප්‍රතිචාර බොහෝමයක් ඔබේ ප්‍රශ්නය වැරදි ලෙස අර්ථකථනය කරන බව මට හැඟේ. ඔබේ කේතය අදහස් දැක්වීමේ කිසිදු වරදක් නැත. ඔබට පැහැදිලි කිරීමේ අදහසක් ලිවිය යුතු යැයි ඔබට හැඟේ නම්, එසේ කළ යුතුය.
ටෝනි එනිස්

Answers:


411

ගිහියන්ගේ වචන වලින්:

  • තියෙනවා අදහස් කිසිවක් වැරදි අවතක්සේරුවට. වැරැද්ද නම්, එවැනි අදහස් දැක්වීමට අවශ්‍ය කේත ලිවීම හෝ සරල ඉංග්‍රීසියෙන් මිත්‍රශීලී බව ඔබ පැහැදිලි කරන තාක් කල් කැටි කළ කේත ලිවීම සුදුසු යැයි උපකල්පනය කිරීමයි.
  • ඔබ කේතය වෙනස් කරන විට අදහස් ස්වයංක්‍රීයව යාවත්කාලීන නොවේ. බොහෝ විට අදහස් දැක්වීම් කේත සමඟ සමපාත නොවන්නේ එබැවිනි.
  • අදහස් පරීක්ෂා කිරීම පහසු නැත.
  • සමාව ඉල්ලීම නරක නැත. ඔබ කළ දෙයට සමාව ඉල්ලීම අවශ්‍ය වේ (පහසුවෙන් තේරුම්ගත නොහැකි කේත ලිවීම) නරක ය.
  • සංකීර්ණ ගැටළුවක් විසඳීම සඳහා සරල කේතයක් ලිවිය හැකි ක්‍රමලේඛකයෙකු සංකීර්ණ කේතයක් ලියන එකකට වඩා හොඳ වන අතර පසුව ඔහුගේ කේතය කරන්නේ කුමක්ද යන්න පැහැදිලි කරමින් දීර් comment අදහස් දැක්වීමක් කරයි.

පහළ පේළිය:

ඔබ ගැන පැහැදිලි කිරීම හොඳයි, එසේ කිරීමට අවශ්‍ය නොවීම හොඳය.


91
හොඳ අදහස් දැක්වීමකට වඩා අඩු කාලයක් තුළ එම කාර්යය කළ හැකි විට, සේවා යෝජකයාගේ මුදල් නැවත ලිවීමේ කේතය වඩාත් ස්වයං පැහැදිලි කිරීමක් ලෙස සාධාරණීකරණය කිරීම නිතර කළ නොහැකිය. යුතුකම් ඇති ක්‍රමලේඛකයෙක් සෑම අවස්ථාවකදීම ඇය / ඔහුගේ විනිශ්චය භාවිතා කළ යුතුය.
aecolley

34
@aecolley ආරම්භ කිරීම සඳහා ස්වයං පැහැදිලි කිරීමේ කේතයක් ලිවීම වඩා හොඳය.
ටියුලින්ස් කෝර්ඩෝවා

127
සමහර විට ස්වයං පැහැදිලි කිරීමේ කේතය වර්තමාන HW&SW සමඟ ගැටළුවක් විසඳීමට තරම් කාර්යක්ෂම නොවේ. ව්‍යාපාර තර්කනය කුප්‍රකට ය ... විකෘති ය. අලංකාර මෘදුකාංග විසඳුම් ඇති ගැටළු වල උප කුලකය විසඳීමට ආර්ථික වශයෙන් ප්‍රයෝජනවත් වන ගැටළු සමූහයට වඩා සැලකිය යුතු තරම් කුඩාය.
ස්කොට් ලෙඩ්ලි

62
wrwong: අනෙක් අතට, මම බොහෝ විට ව්‍යාපාර තර්කනයේ වැඩි අදහස් ලියන බව පෙනේ, මන්ද ප්‍රකාශිත අවශ්‍යතාවයන් සමඟ කේත රේඛා ගැලපෙන ආකාරය හරියටම පෙන්වීම වැදගත් ය: “කම්බි වංචා සම්බන්ධයෙන් අප සියල්ලන්ම සිරගෙට යාම වළක්වන රේඛාව මෙයයි. දණ්ඩ කේතය ". එය ඇල්ගොරිතමයක් පමණක් නම්, ක්‍රමලේඛකයෙකුට අවශ්‍ය නම් මුල සිටම අරමුණ හඳුනාගත හැකිය. ව්‍යාපාර තර්කනය සඳහා ඔබට එකවර එකම කාමරයේ නීති lawyer යෙකු සහ සේවාදායකයා අවශ්‍ය වේ. මගේ "සාමාන්‍ය බුද්ධිය" සාමාන්‍ය යෙදුම් ක්‍රමලේඛකයාට වඩා වෙනස් වසමක තිබිය හැක ;-)
ස්ටීව් ජෙසොප්

29
code user61852 එම කේතය ලියා ඔබ එහි ගිලී ගිය අවසාන කාලය ගත කළ ඔබට ස්වයං පැහැදිලි කිරීමක් හැර, අවුරුදු පහක සිට එය නඩත්තු කිරීමට හෝ සංස්කරණය කිරීමට ඔබට ස්වයං පැහැදිලි කිරීමක් නොවිය හැකිය. ඔබ නොවන පුද්ගලයන් දෙස බැලිය යුතුය. “ස්වයං පැහැදිලි කිරීම” යනු නිර්වචනවල ශුද්ධ වූ ශුද්ධ ග්‍රිල් එකකි.
ෂදූර්

110

කේතය සංකීර්ණ හෝ ව්‍යාකූල වීමට විවිධ හේතු රාශියක් ඇත. මෙම වඩාත් පොදු හේතු හොඳම එය අඩු වැට්ටවීමට කිරීමට කේතය refactoring විසින්, කිසිදු ආකාරයක අදහස් එකතු කිරීම මඟින් ආමන්ත්රණය කර ඇත.

කෙසේ වෙතත්, හොඳින් තෝරාගත් අදහස් දැක්වීමක් හොඳම තේරීම වන අවස්ථා තිබේ.

  • එය නම් ඇල්ගොරිතමය ම සංකීර්ණ හා අවුල් බව, එය ක්රියාත්මක කිරීම වන හුදෙක් ගණිත සඟරා දක්වා ලිඛිත හා මෙතෙක් විසින් ලබා ඇති Mbogo ගේ ඇල්ගොරිතමය-පසුව ඔබ ක්රියාත්මක කිරීම ඉතා පටන් කියවීම අදහසක් දමා ලෙස සඳහන් පසු ආකාරයේ "මෙය මුලින් විස්තර කර ඇති විජට් ප්‍රතිනිර්මාණය කිරීම සඳහා වූ Mbogo හි ඇල්ගොරිතම වේ: [කඩදාසි වල URL]. මෙම ක්‍රියාවට නැංවීමේදී ඇලිස් සහ කැරොල් [වෙනත් කඩදාසියක URL] පිරිපහදු කරයි." ඊට වඩා වැඩි විස්තරයකට යාමට උත්සාහ නොකරන්න; යමෙකුට වැඩි විස්තර අවශ්‍ය නම් ඔවුන්ට සම්පූර්ණ කඩදාසි කියවිය යුතුය.

  • ඔබ යම් විශේෂිත අංකනයක පේළි එකක් හෝ දෙකක් ලෙස ලිවිය හැකි යමක් ගෙන එය අත්‍යවශ්‍ය කේතයේ විශාල ලෝකයක් දක්වා විස්තාරණය කර ඇත්නම්, එම විශේෂිත අංකන පේළි එකක් හෝ දෙකක් ශ්‍රිතයට ඉහළින් අදහස් දැක්වීමක තැබීම හොඳ ක්‍රමයකි එය කළ යුතු දේ පා the කයාට කියන්න . මෙම විශේෂිත අංකනය සමහරවිට නිසා, තර්කය "එම ප්රකාශය සිදු සමමුහුර්ත කිරීමේ කේතය සමඟ ලැබෙන නම් නොව," ව්යාතිරේකයක් වේ බොහෝ කේතය අධික දෝෂ සොයා ගැනීමට පහසු වේ. (ඔබ ඒ වෙනුවට ඉංග්‍රීසියෙන් පිරිවිතරයක් ලියා ඇත්නම් එය අනෙක් ක්‍රමයයි.) හොඳ උදාහරණයක් මෙහි ඇත: https://dxr.mozilla.org/mozilla-central/source/layout/style/nsCSSScanner.cpp#1057 ...

    /**
     * Scan a unicode-range token.  These match the regular expression
     *
     *     u\+[0-9a-f?]{1,6}(-[0-9a-f]{1,6})?
     *
     * However, some such tokens are "invalid".  There are three valid forms:
     *
     *     u+[0-9a-f]{x}              1 <= x <= 6
     *     u+[0-9a-f]{x}\?{y}         1 <= x+y <= 6
     *     u+[0-9a-f]{x}-[0-9a-f]{y}  1 <= x <= 6, 1 <= y <= 6
    
  • කේතය සමස්තයක් ලෙස සරල නම්, නමුත් අධික ලෙස කැටි ගැසුණු, අනවශ්‍ය හෝ සරල වැරැද්දක් ලෙස පෙනෙන දේවල් එකක් හෝ දෙකක් අඩංගු වේ, නමුත් හේතු නිසා එසේ විය යුතුය, එවිට ඔබ සැක සහිත පෙනුමට වඩා ඉහළින් විවරණයක් තබන්න. ඔබ හේතු දක්වන්න . මෙන්න සරල උදාහරණයක්, නියතයකට නිශ්චිත අගයක් ඇත්තේ මන්දැයි පැහැදිලි කළ යුතු එකම දෙය.

    /* s1*s2 <= SIZE_MAX if s1 < K and s2 < K, where K = sqrt(SIZE_MAX+1) */
    const size_t MUL_NO_OVERFLOW = ((size_t)1) << (sizeof(size_t) * 4);
    if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) &&
        nmemb > 0 && SIZE_MAX / nmemb < size)
      abort();
    

25
එය කෝපයක්, 4විය යුතුය CHAR_BIT / 2;-)
ස්ටීව් ජෙසොප්

Te ස්ටීව් ජෙසොප්: CHAR_BITS16 ක් සහ ප්‍රමාණයේ (size_t) 2 ක් වූ, නමුත් size_t හි උපරිම අගය උදා: 2 ^ 20 [size_t පෑඩින් බිට් 12 ක්] ක්‍රියාත්මක කිරීම වළක්වා ගත හැකිද?
සුපර් කැට්

2
මම පැහැදිලිව ම නිවාරනය බව උදාහරණයක්, ඉන් අදහස් වන්නේ C99 ප්රමිතියේ දී, දී බව දෙයක් නොවේ @supercat නැහැ වේ තාක්ෂණික වැරදි. එය සිදුවන්නේ (තරමක් වෙනස් කරන ලද) OpenBSD වෙතින් reallocarrayවන අතර OpenBSD සාමාන්‍යයෙන් ඔවුන්ගේ ABI හි සිදු නොවන අවස්ථාවන් සපුරාලීම විශ්වාස නොකරයි .
zwol

3
Ack සැක්: කේතය POSIX උපකල්පන වටා නිර්මාණය කර ඇත්නම්, CHAR_BITS භාවිතා කිරීමෙන් කේතය 8 හැර වෙනත් අගයන් සමඟ ක්‍රියා කළ හැකිය යන හැඟීම ලබා දිය හැකිය.
සුපර් කැට්

2
Ack සැක්: නිශ්චිත පළල අත්සන් නොකළ වර්ග ප්‍රයෝජනවත් වීමට නම්, ඒවායේ අර්ථ නිරූපණයන් ප්‍රමාණයෙන් ස්වාධීනව අර්ථ දැක්විය යුතුය int. එය ලබා දී ඇති පරිදි uint32_t x,y,z;, අර්ථය (x-y) > zරඳා පවතින්නේ ප්‍රමාණය මත ය int. තවද, ශක්තිමත් කේත ලිවීම සඳහා නිර්මාණය කර ඇති භාෂාවක් මඟින් ගණනය කිරීම් වර්ගයේ පරාසය ඉක්මවා යනු ඇතැයි අපේක්‍ෂා කරන වර්ගයක් අතර වෙනස හඳුනා ගැනීමට ක්‍රමලේඛකයන්ට ඉඩ දිය යුතු අතර නිහ ly ව ඔතා තැබිය යුතුය. වර්ගයේ පරාසය ඉක්මවා යනු ඇතැයි අපේක්ෂා නොකෙරේ, නමුත් ...
සුපර් කැට්

61

ඉතින් අදහස් දැක්වීමකින් සංකීර්ණ කේතය පැහැදිලි කිරීමේ වරද කුමක්ද?

විකිපීඩියා ලිපියේ අර්ථ දක්වා ඇති පරිදි එය හරි හෝ වැරදි පිළිබඳ ප්‍රශ්නයක් නොව 'හොඳම පුහුණුව' පිළිබඳ ප්‍රශ්නයකි .

හොඳම පුහුණුව යනු වෙනත් ක්‍රමවලින් ලබාගත් ප්‍රති than ලවලට වඩා ඉහළ ප්‍රති results ල නිරතුරුවම පෙන්නුම් කරන ක්‍රමයක් හෝ තාක්‍ෂණයකි, එය මිණුම් ලකුණක් ලෙස භාවිතා කරයි.

එබැවින් හොඳම පුහුණුව වන්නේ කේතය පළමුව වැඩි දියුණු කිරීමට උත්සාහ කිරීම සහ එය කළ නොහැකි නම් ඉංග්‍රීසි භාවිතා කිරීමයි.

එය නීතියක් නොවේ, නමුත් අදහස් දැක්වීමට අවශ්‍ය ප්‍රතිනිර්මාණය කළ කේතයට වඩා ප්‍රතිනිර්මාණය කිරීම අවශ්‍ය වන අදහස් දැක්වීමේ කේතය සොයා ගැනීම වඩාත් පොදු වේ, හොඳම භාවිතයෙන් මෙය පිළිබිඹු වේ.


42
+1 සඳහා "අදහස් දැක්වීමට අවශ්‍ය ප්‍රතිනිර්මාණය කළ කේතයට වඩා ප්‍රතිනිර්මාණය කිරීම අවශ්‍ය වන අදහස් දැක්වීමේ කේතය සොයා ගැනීම වඩාත් පොදු වේ"
බ්‍රැන්ඩන්

7
හරි, නමුත් එම ප්‍රකාශය //This code seriously needs a refactor
කොපමණ වාරයක්

2
ඇත්ත වශයෙන්ම, දැඩි විද්‍යාත්මක අධ්‍යයනයකින් පිටුබලය නොලබන ඕනෑම ඊනියා හොඳම භාවිතයක් හුදෙක් මතයකි.
Blrfl

56

ඔබේ ලස්සන, මනාව සකසන ලද, හොඳින් ව්‍යුහගත කර කියවිය හැකි කේතයක් ක්‍රියාත්මක නොවන දවසක් පැමිණේ. නැතහොත් එය ප්‍රමාණවත් ලෙස ක්‍රියා නොකරනු ඇත. නැතහොත් එය ක්‍රියාත්මක නොවන සහ වෙනස් කිරීම අවශ්‍ය වන විශේෂ අවස්ථාවක් පැන නගී.

එම අවස්ථාවේදී, ඔබට දේවල් වෙනස් කරන යමක් කිරීමට අවශ්‍ය වනු ඇත, එවිට එය නිවැරදිව ක්‍රියා කරයි. විශේෂයෙන් කාර්ය සාධන ගැටළු ඇති අවස්ථාවන්හිදී පමණක් නොව, බොහෝ විට ඔබ වැඩ කරන පුස්තකාල, ඒපීඅයි, වෙබ් සේවා, මැණික් හෝ මෙහෙයුම් පද්ධති වලින් එකක් ඔබ බලාපොරොත්තු වන පරිදි හැසිරෙන්නේ නැත, ඔබට යෝජනා ඉදිරිපත් කිරීම අවසන් කළ හැකිය අවශ්‍යයෙන්ම අකාර්යක්ෂම, නමුත් ප්‍රති-බුද්ධිමය හෝ පැහැදිලිව පෙනෙන ඒවා නොවේ.

ඔබ එම ප්‍රවේශය තෝරාගත්තේ මන්දැයි පැහැදිලි කිරීමට ඔබට යම් අදහස් දැක්වීමක් නොමැති නම්, අනාගතයේදී යමෙකු (සහ යමෙකු ඔබ විය හැකිය) කේතය දෙස බැලීමට හොඳ අවස්ථාවක් තිබේ, එය “ස්ථාවර” වන්නේ කෙසේදැයි බලන්න වඩා කියවිය හැකි හා අලංකාර දෙයක් වන අතර නොදැනුවත්වම ඔබේ නිවැරදි කිරීම අහෝසි කරන්න, මන්ද එය නිවැරදි කිරීමක් ලෙස නොපෙනේ.

සෑම කෙනෙකුම සෑම විටම පරිපූර්ණ කේතයක් ලියා ඇත්නම්, අසම්පූර්ණ යැයි පෙනෙන කේතය සැබෑ ලෝකයේ යම් උපක්‍රමශීලී මැදිහත්වීමක් වටා ක්‍රියා කරන බව පැහැදිලිය, නමුත් දේවල් ක්‍රියා කරන්නේ එලෙස නොවේ. බොහෝ ක්‍රමලේඛකයින් බොහෝ විට ව්‍යාකූල හෝ තරමක් ගැටගැසුණු කේතයක් ලියයි, එබැවින් අපට මෙය හමු වූ විට එය පිළිවෙලට තැබීමට ස්වාභාවික නැඹුරුවක් ඇත. මා ලියූ පැරණි කේතය කියවන සෑම අවස්ථාවකම මගේ අතීත ආත්මය සැබෑ මෝඩයෙක් යැයි මම දිවුරමි .

එබැවින් අදහස් දැක්වීම නරක කේතයකට සමාව ඉල්ලීමක් ලෙස මම නොසිතමි, නමුත් සමහර විට ඔබ පැහැදිලි දේ නොකළේ මන්ද යන්න පිළිබඳ පැහැදිලි කිරීමක් විය හැකිය. තිබීම // The standard approach doesn't work against the 64 bit version of the Frobosticate Libraryඔබේ අනාගත ස්වයං ඇතුළු අනාගත සංවර්ධකයින්ට කේතයේ එම කොටස කෙරෙහි අවධානය යොමු කිරීමට සහ එම පුස්තකාලයට එරෙහිව පරීක්ෂා කිරීමට ඉඩ දෙනු ඇත. ඔබගේ මූලාශ්‍ර පාලනයේ අදහස් දැක්වීම් ද ඔබ කළ හැකි බව විශ්වාසයි, නමුත් මිනිසුන් දෙස බලන්නේ යම්කිසි වැරැද්දක් සිදු වූ පසුව පමණි. කේතය වෙනස් කරන විට ඔවුන් කේත අදහස් කියවනු ඇත.

අප සැමවිටම න්‍යායාත්මකව පරිපූර්ණ කේතයක් ලිවිය යුතු යැයි පවසන අය සැමවිටම සැබෑ ලෝක පරිසරවල වැඩසටහන්කරණය පිළිබඳ අත්දැකීම් ඇති අය නොවේ. සමහර විට ඔබට යම් මට්ටමකට ක්‍රියා කරන කේත ලිවීමට අවශ්‍ය වේ, සමහර විට ඔබ අසම්පූර්ණ පද්ධති සමඟ අන්තර් ක්‍රියා කිරීමට අවශ්‍ය වේ. ඔබට මෙය අලංකාර හා හොඳින් ලිඛිත ආකාරයකින් කළ නොහැකි බව මින් අදහස් නොවේ, නමුත් පැහැදිලි නොවන විසඳුම් සඳහා පැහැදිලි කිරීමක් අවශ්‍ය වේ.

මම විනෝදාංශ ව්‍යාපෘති සඳහා කේත ලියන විට වෙන කිසිවෙකු කියවන්නේ නැති බව මම තවමත් අවුල් සහගත යැයි සිතන කොටස් වලට අදහස් දක්වන්නෙමි - නිදසුනක් වශයෙන්, ඕනෑම ත්‍රිමාණ ජ්‍යාමිතියකට ගණිතය සම්බන්ධ වන්නේ මා සම්පූර්ණයෙන්ම නිවසේ නොසිටින ගණිතයෙනි - මන්ද මම නැවත පැමිණෙන විට මම දනිමි මාස හයකින් මට මේ දේවල් කරන්නේ කෙසේද යන්න මුළුමනින්ම අමතක වනු ඇත. එය නරක කේතයට සමාව ඉල්ලීමක් නොවේ, එය පුද්ගලික සීමාවක් පිළිගැනීමකි. එය සීමා රහිතව තැබීමෙන් මා කළ යුත්තේ අනාගතයේ දී මා වෙනුවෙන් වැඩි වැඩ කොටසක් නිර්මාණය කිරීමයි. මට දැන් එය වළක්වා ගත හැකි නම් මගේ අනාගතය අනවශ්‍ය ලෙස යමක් මුදා හැරීමට මට අවශ්‍ය නැත. එයට තිබිය හැකි වටිනාකම කුමක්ද?


5
H ක්‍රිස්ටියන් එයද? පළමු පේළියේ එම ප්‍රකාශය සඳහන් කරයි, නිසැකවම, නමුත් ඉන් ඔබ්බට එය මා තේරුම් ගත් පරිදි ටිකක් පුළුල් ය.
glenatron

9
"මා ලියූ පැරණි කේතය කියවන සෑම අවස්ථාවකම මගේ අතීත ආත්මය සැබෑ මෝඩයෙක් යැයි මම දිවුරමි." මගේ සංවර්ධන වෘත්තියට වසර හතරක් ගත වී ඇති අතර මෙය මාස 6 කට වඩා පැරණි දෙයක් දෙස බලන සෑම අවස්ථාවකම සිදුවන සිදුවීමක් බව මට පෙනේ.
කෙන්

6
බොහෝ අවස්ථාවන්හීදී, වඩාත්ම තොරතුරු සහ ප්‍රයෝජනවත් historical තිහාසික තොරතුරු සලකා බලනු ලබන නමුත් ඒවාට එරෙහිව තීරණය කරනු ලබන කරුණු හා සම්බන්ධ වේ. යමෙකු යම් දෙයක් සඳහා X ප්‍රවේශය තෝරා ගන්නා අවස්ථා බොහෝමයක් ඇති අතර වෙනත් ප්‍රවේශයක් Y වඩා හොඳ යැයි පෙනේ; එවැනි සමහර අවස්ථාවන්හිදී, Y X ට වඩා හොඳින් ක්‍රියා කරයි, නමුත් විසඳිය නොහැකි ගැටළු කිහිපයක් ඇති වේ. එම ගැටළු නිසා Y වළක්වා ගනු ලැබුවේ නම්, එවැනි දැනුමක් මඟින් Y ප්‍රවේශය ක්‍රියාත්මක කිරීමට අසාර්ථක උත්සාහයන් සඳහා කාලය නාස්ති කිරීමෙන් වළක්වා ගත හැකිය.
supercat

4
එදිනෙදා කටයුතුවලදී මම ප්‍රගති අදහස් දැක්වීමේ වැඩ ගොඩක් භාවිතා කරමි- ඒවා දිගු කාලීනව නොපවතින නමුත්, ඊළඟට මා කුමක් කිරීමට යනවාද යන්න මට මතක් කර දීම සඳහා TODO සටහනක් හෝ කෙටි කොටසක් දැමීම ප්‍රයෝජනවත් විය හැකිය. උදේ මතක් කිරීම.
glenatron

1
@Lilienthal, මම හිතන්නේ නැහැ, පසුගිය පැරා ඇත සීමා -ව්යාපෘති ඔහු පෞද්ගලික කිරීමට "... මම කිව්වා තවමත් මම අවුල් සොයා බව. අදහස් කොටස්"
වයිල්ඩ්කාඩ්

29

අදහස් දැක්වීමේ අවශ්‍යතාවය කේතයේ වියුක්ත මට්ටමට ප්‍රතිලෝමව සමානුපාතික වේ.

උදාහරණයක් ලෙස, එකලස් කිරීමේ භාෂාව, බොහෝ ප්‍රායෝගික අරමුණු සඳහා, අදහස් දැක්වීමකින් තොරව තේරුම්ගත නොහැකිය. ෆිබොනාච්චි ශ්‍රේණියේ නියමයන් ගණනය කර මුද්‍රණය කරන කුඩා වැඩසටහනක උපුටනයක් මෙන්න :

main:   
; initializes the two numbers and the counter.  Note that this assumes
; that the counter and num1 and num2 areas are contiguous!
;
    mov ax,'00'                     ; initialize to all ASCII zeroes
    mov di,counter                  ; including the counter
    mov cx,digits+cntDigits/2       ; two bytes at a time
    cld                             ; initialize from low to high memory
    rep stosw                       ; write the data
    inc ax                          ; make sure ASCII zero is in al
    mov [num1 + digits - 1],al      ; last digit is one
    mov [num2 + digits - 1],al      ; 
    mov [counter + cntDigits - 1],al

    jmp .bottom         ; done with initialization, so begin

.top
    ; add num1 to num2
    mov di,num1+digits-1
    mov si,num2+digits-1
    mov cx,digits       ; 
    call    AddNumbers  ; num2 += num1
    mov bp,num2         ;
    call    PrintLine   ;
    dec dword [term]    ; decrement loop counter
    jz  .done           ;

    ; add num2 to num1
    mov di,num2+digits-1
    mov si,num1+digits-1
    mov cx,digits       ;
    call    AddNumbers  ; num1 += num2
.bottom
    mov bp,num1         ;
    call    PrintLine   ;
    dec dword [term]    ; decrement loop counter
    jnz .top            ;
.done
    call    CRLF        ; finish off with CRLF
    mov ax,4c00h        ; terminate
    int 21h             ;

අදහස් දැක්වීම් සමඟ වුවද, එය විහිළුවට ලක් කිරීම තරමක් සංකීර්ණ විය හැකිය.

නවීන උදාහරණය: රීජෙක්ස් බොහෝ විට ඉතා අඩු වියුක්ත ව්‍යුහයන් වේ (කුඩා අකුරු, අංක 0, 1, 2, නව රේඛා ආදිය). ඔවුන්ට බොහෝ විට සාම්පල ස්වරූපයෙන් අදහස් අවශ්‍ය වේ (බොබ් මාටින්, IIRC, මෙය පිළිගනී). මෙන්න (මම හිතන්නේ) HTTP (S) සහ FTP URL වලට අනුරූප විය යුතු රීජෙක්ස් එකක්:

^(((ht|f)tp(s?))\://)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|m
+il|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(/($|[a-zA-Z0-9\.
+\,\;\?\'\\\+&amp;%\$#\=~_\-]+))*$

භාෂා වියුක්ත ධූරාවලිය ඉදිරියට යත්ම, ගොඩනංවන ලද ලියකියවිලි සැපයීම සඳහා ක්‍රමලේඛකයාට ප්‍රකෝපකාරී වියුක්ත කිරීම් (විචල්‍ය නාමය, ක්‍රියාකාරී නම්, පන්ති නාම, මොඩියුලයේ නම්, අතුරුමුහුණත්, ඇමතුම් ආපසු යනාදිය) භාවිතා කළ හැකිය. මෙයින් වාසි ලබා ගැනීම නොසලකා හැරීම සහ ඒ පිළිබඳව කඩදාසි වලට අදහස් දැක්වීම කම්මැලි, නඩත්තු කරන්නාට අගෞරව කිරීමකි.

මම හිතනකොටත් සී සංඛ්යාත්මක වට්ටෝරු බොහෝ දුරට කිරීමට වදාල පරිවර්තනය C ++ සංඛ්යාත්මක වට්ටෝරු , මම ඒවයින් ලෙස ආරම්භ වූ සංඛ්යාත්මක වට්ටෝරු සියලුම විචල්යයන් සමඟ, (FORTAN දී) a, aa, b, c, cc, ආදිය එක් එක් අනුවාදය මගින් පවත්වා ගෙන ගියෝ ය. ඇල්ගොරිතම නිවැරදි විය හැකි නමුත් ඒවා ලබා දී ඇති භාෂා වියුක්ත කිරීම් වලින් ප්‍රයෝජන ගත්තේ නැත. ඔවුන් මාව ඉවත් කරනවා. ආචාර්ය ඩොබ්ස් ලිපියක නියැදිය - වේගවත් ෆූරියර් පරිවර්තනය :

void four1(double* data, unsigned long nn)
{
    unsigned long n, mmax, m, j, istep, i;
    double wtemp, wr, wpr, wpi, wi, theta;
    double tempr, tempi;

    // reverse-binary reindexing
    n = nn<<1;
    j=1;
    for (i=1; i<n; i+=2) {
        if (j>i) {
            swap(data[j-1], data[i-1]);
            swap(data[j], data[i]);
        }
        m = nn;
        while (m>=2 && j>m) {
            j -= m;
            m >>= 1;
        }
        j += m;
    };

    // here begins the Danielson-Lanczos section
    mmax=2;
    while (n>mmax) {
        istep = mmax<<1;
        theta = -(2*M_PI/mmax);
        wtemp = sin(0.5*theta);
        wpr = -2.0*wtemp*wtemp;
        wpi = sin(theta);
        wr = 1.0;
        wi = 0.0;
        for (m=1; m < mmax; m += 2) {
            for (i=m; i <= n; i += istep) {
                j=i+mmax;
                tempr = wr*data[j-1] - wi*data[j];
                tempi = wr * data[j] + wi*data[j-1];

                data[j-1] = data[i-1] - tempr;
                data[j] = data[i] - tempi;
                data[i-1] += tempr;
                data[i] += tempi;
            }
            wtemp=wr;
            wr += wr*wpr - wi*wpi;
            wi += wi*wpr + wtemp*wpi;
        }
        mmax=istep;
    }
}

වියුක්තකරණය පිළිබඳ විශේෂ අවස්ථාවක් ලෙස, සෑම භාෂාවකම ඇතැම් පොදු කාර්යයන් සඳහා මුග්ධ / කැනොනිකල් කේත ස්නිපෙට් ඇත (සී හි ගතික සම්බන්ධිත ලැයිස්තුවක් මකා දැමීම), ඒවා පෙනුම කෙසේ වෙතත් ඒවා ලේඛනගත නොකළ යුතුය. ක්‍රමලේඛකයින් නිල නොවන ලෙස භාෂාවේ කොටසක් වන බැවින් මෙම මෝඩයන් ඉගෙන ගත යුතුය.

එබැවින් රැගෙන යාම: වළක්වා ගත නොහැකි පහත් මට්ටමේ ගොඩනැඟිලි කොටස් වලින් සාදන ලද මුග්ධ නොවන කේතයට අදහස් දැක්වීම් අවශ්‍ය වේ. මෙය සිදුවීමට වඩා අඩු WAAAAY අවශ්‍ය වේ.


1
එකලස් කිරීමේ භාෂාවෙන් කිසිවෙකු මේ වගේ පේළියක් ලිවිය යුතු නැත : dec dword [term] ; decrement loop counter. අනෙක් අතට, ඔබේ එකලස් කිරීමේ භාෂා උදාහරණය අස්ථානගත වී ඇත්තේ එක් එක් "කේත ඡේදයට" පෙර අදහස් දැක්වීමක් වන අතර ඊළඟ කේත වාරණය කුමක් කරයිද යන්න පැහැදිලි කරයි. එවැනි අවස්ථාවකදී, විවරණය සාමාන්‍යයෙන් ව්‍යාජ කේතයේ තනි පේළියකට සමාන වේ, එනම් ;clear the screenතිරය ​​ඉවත් කිරීමට සත්‍ය වශයෙන්ම ගතවන පේළි 7 ක් වැනි ය.
ස්කොට් විට්ලොක්

1
ඔව්, එකලස් කිරීමේ නියැදියේ අනවශ්‍ය අදහස් කිහිපයක් මා සලකා බලනු ඇත, නමුත් සාධාරණ ලෙස කිවහොත් එය 'හොඳ' එකලස් කිරීමේ ශෛලිය නියෝජනය කරයි. පේළි එකක් හෝ දෙකක ඡේද පෙරවදනක් සමඟ වුවද, කේතය අනුගමනය කිරීම ඇත්තෙන්ම දුෂ්කර වනු ඇත. මම ASF නියැදිය FFT උදාහරණයට වඩා හොඳින් තේරුම් ගත්තා. මම උපාධි පාසලේ C ++ හි FFT වැඩසටහනක් කළ අතර එය මේ කිසිවක් පෙනුනේ නැත, නමුත් පසුව අපි භාවිතා කළේ STL, iterator, functors ක්‍රම කිහිපයක ඇමතුම් කිහිපයක් පමණි. මොනොලිතික් ශ්‍රිතය තරම් වේගවත් නොව කියවීමට පහසුය. NRinC ++ නියැදියට වෙනස්ව එය එක් කිරීමට මම උත්සාහ කරමි.
ක්‍රිස්ටියන් එච්

ඔබ අදහස් කළේ ^(((ht|f)tps?)\:\/\/)?(www\.)*[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(\/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*$? සංඛ්‍යාත්මක ලිපින ගැන සැලකිලිමත් වන්න.
izabera

මගේ අදහස වැඩි වශයෙන් හෝ අඩුවෙන්: ඉතා පහත් මට්ටමේ වියුක්ත කිරීම් වලින් සාදන ලද සමහර දේවල් කියවීමට හෝ සත්‍යාපනය කිරීමට පහසු නැත. අදහස් (සහ, දුර බැහැර නොයෑමට, ටෙස්ට්) ප්‍රයෝජනවත් විය හැකි අතර හානියක් නොවේ. ඒ අතරම, ලබා ගත හැකි ඉහළ මට්ටමේ වියුක්තයන් භාවිතා නොකිරීම (: ඇල්ෆා :: අංක: ලබා ගත හැකි තැන) ඉහළ මට්ටමේ වියුක්ත කිරීම් භාවිතා කරනවාට වඩා හොඳ අදහස් දැක්වීම් සමඟ පවා තේරුම් ගැනීමට අපහසු වේ.
ක්‍රිස්ටියන් එච්

3
+1: "The need for comments is inversely proportional to the abstraction level of the code." එහි ඇති සෑම දෙයක්ම බොහෝ සෙයින් සාරාංශ කරයි.
ජෙරාට්

21

කේතයේ අදහස් දැක්වීමේ කිසිදු වරදක් ඇතැයි මම විශ්වාස නොකරමි. මගේ මතය අනුව අදහස් දැක්වීම් කෙසේ හෝ නරක ය යන අදහසට හේතුව සමහර ක්‍රමලේඛකයින් දේවල් ඕනෑවට වඩා ගෙන යාමයි. මෙම කර්මාන්තය තුළ, විශේෂයෙන් අන්තවාදී අදහස් කෙරෙහි විශාල පරාසයක් ඇත. කොහේ හරි අදහස් දැක්වූ කේතය නරක කේතයට සමාන වූ අතර ඒ මන්දැයි මට විශ්වාස නැත.

අදහස් වලට ගැටළු ඇත - ඔබ ඔවුන් යොමු කරන කේතය යාවත්කාලීන කරන විට ඒවා යාවත්කාලීනව තබා ගත යුතුය, එය කලාතුරකින් සිදු වේ. විකියක් හෝ වෙනත් දෙයක් යනු ඔබේ කේතය පිළිබඳ සවිස්තරාත්මක ලේඛනගත කිරීම සඳහා වඩාත් සුදුසු සම්පතකි. ඔබේ කේතය අදහස් දැක්වීමකින් තොරව කියවිය යුතුය. අනුවාද පාලනය හෝ සංශෝධන සටහන් විය යුත්තේ ඔබ විසින් සිදු කරන ලද කේත වෙනස්කම් විස්තර කරන ස්ථානයයි.

කෙසේ වෙතත්, ඉහත කිසිවක් අදහස් දැක්වීම් අවලංගු නොකරයි. අප ජීවත් වන්නේ පරමාදර්ශී ලෝකයක නොවේ, එබැවින් ඉහත සඳහන් කවර හෝ හේතුවක් නිසා අසමත් වූ විට, පසුබෑමට මට යම් අදහස් දැක්වීමට කැමැත්තෙමි.


18

මම හිතන්නේ ඔයා කියන දේට ටිකක් වැඩියෙන් කියවනවා. ඔබේ පැමිණිල්ලට පැහැදිලි කොටස් දෙකක් තිබේ:

(1) සංකීර්ණ ඇල්ගොරිතමයක් හෝ (2) විස්තරාත්මක විවරණයක් සහිත දිගු හා කැටි කළ කේත කැබැල්ලක් පැහැදිලි කිරීමේ වරද කුමක්ද?

(1) නොවැළැක්විය හැකිය. මාටින් ඔබ සමඟ එකඟ නොවනු ඇතැයි මම නොසිතමි. ඔබ වේගවත් ප්‍රතිලෝම වර්ග මූලයක් වැනි දෙයක් ලියන්නේ නම්, එය “නපුරු පාවෙන ලක්ෂ්‍ය බිට් මට්ටමේ හැක් කිරීම” වුවද ඔබට අදහස් කිහිපයක් අවශ්‍ය වනු ඇත. ඩීඑෆ්එස් හෝ ද්විමය සෙවුම වැනි සරල දෙයක් හැර, ඔබේ කේතය කියවන පුද්ගලයාට එම ඇල්ගොරිතම පිළිබඳ අත්දැකීම් ලැබෙනු ඇතැයි සිතිය නොහැක, එබැවින් එය කුමක්ද යන්න පිළිබඳ අදහස් දැක්වීමේදී අවම වශයෙන් සඳහනක්වත් තිබිය යුතු යැයි මම සිතමි.

කෙසේ වෙතත්, බොහෝ කේත (1) නොවේ. කලාතුරකින් ඔබ අතින් රෝල් කරන ලද මුටෙක්ස් ක්‍රියාත්මක කිරීම්, දුර්වල පුස්තකාල සහාය ඇති අපැහැදිලි රේඛීය වීජ ගණිත මෙහෙයුම් සහ ඔබේ සමාගමේ පර්යේෂණ කණ්ඩායමට පමණක් දන්නා නව ඇල්ගොරිතම හැර වෙනත් කිසිවක් නොකියනු ඇත. බොහෝ කේත පුස්තකාල / රාමු / API ඇමතුම්, IO, බොයිලර් ප්ලේට් සහ ඒකක පරීක්ෂණ වලින් සමන්විත වේ.

මාටින් කතා කරන කේතය මෙයයි. ඔහු ඔබේ ප්‍රශ්නයට පරිච්ඡේදයේ ඉහළින්ම කර්නිගන් සහ ප්ලගර්ගේ උපුටා දැක්වීම සමඟ ආමන්ත්‍රණය කරයි:

නරක කේතයට අදහස් දක්වන්න එපා it එය නැවත ලියන්න.

ඔබේ කේතයේ දිගු, කැටි ගැසුණු කොටස් තිබේ නම්, ඔබේ කේතය පිරිසිදුව තබා ගැනීමට ඔබ අසමත් වී ඇත. මෙම ගැටළුවට ඇති හොඳම විසඳුම වන්නේ අනාගත සංවර්ධකයින්ට එය අවුල් කිරීමට උදව් කිරීම සඳහා ගොනුවේ ඉහළින් ඡේද-දිගු විවරණයක් ලිවීම නොවේ; හොඳම විසඳුම එය නැවත ලිවීමයි.

මාටින් පවසන්නේ මෙයයි.

අදහස් නිසි ලෙස භාවිතා කිරීම යනු කේතයෙන් අප ප්‍රකාශ කිරීමට අපොහොසත් වීම සඳහා වන්දි ගෙවීමයි ... අදහස් සැමවිටම අසාර්ථක වේ. ඒවා නොමැතිව අප ප්‍රකාශ කරන්නේ කෙසේදැයි අපට සැමවිටම සිතාගත නොහැකි නිසා ඒවා අප සතුව තිබිය යුතුය, නමුත් ඒවා භාවිතා කිරීම සැමරීමට හේතුවක් නොවේ.

මෙය ඔබගේ (2) වේ. දිගු, කැටි ගැසුණු කේතයට අදහස් දැක්වීමට අවශ්‍ය බව මාටින් එකඟ වේ - නමුත් ඔහු එම කේතයේ වරද එය ලියූ ක්‍රමලේඛකයාගේ කර මත තබයි, “එය ප්‍රමාණවත් නොවන බව අපි කවුරුත් දනිමු” යන කිසියම් අශෝභන අදහසක් නොවේ. ඔහු මෙසේ තර්ක කරයි:

අදහස් කිහිපයක් සහිත පැහැදිලි සහ ප්‍රකාශන කේතය බොහෝ අදහස් සහිත අවුල් සහගත හා සංකීර්ණ කේත වලට වඩා බෙහෙවින් උසස් ය. ඔබ කළ අවුල පැහැදිලි කරන අදහස් ලිවීමට ඔබේ කාලය ගත කරනවා වෙනුවට, එම අවුල පිරිසිදු කිරීමට එය වැය කරන්න.


3
මා සමඟ වැඩ කරමින් සිටි සංවර්ධකයෙකු වේගවත් වර්ග මූල ඇල්ගොරිතම පැහැදිලි කිරීම සඳහා "නපුරු පාවෙන ලක්ෂ්‍ය බිටු මට්ටමේ හැකින්" ලියා තිබේ නම් - ඔවුන් මා සමඟ කතා කරනු ඇත. ඔවුන් වඩාත් ප්‍රයෝජනවත් තැනකට යොමු කිරීමක් ඇතුළත් කළ තාක් කල් මම සතුටු වන්නෙමි.
මයිකල් ඇන්ඩර්සන්

8
මම එක් ආකාරයකින් එකඟ නොවෙමි - නරක දෙයක් ඉතා ඉක්මණින් සිදුවන ආකාරය පැහැදිලි කරන අදහස් දැක්වීමක්. නැවත ස්පර්ශ නොකිරීමට ඉඩ ඇති සමහර කේත ලබා දී ඇති විට (බොහෝ අනුමාන කේතය) එවිට අදහස් දැක්වීම විශාල ප්‍රතිචක්‍රීකරණයකට වඩා හොඳ ව්‍යාපාරික විසඳුමක් වන අතර එය බොහෝ විට දෝෂ හඳුන්වා දෙයි (රඳා පවතින දෝෂය මරා දමන විසඳුමක් ලෙස තවමත් දෝෂයකි). පරිපූර්ණව තේරුම්ගත හැකි කේත සහිත පරිපූර්ණ ලෝකයක් අපට නොමැත.
gbjbaanb

2
ry ට්‍රයිසිස් හහා, ඔව්, නමුත් ක්‍රමලේඛකයින් වගකිව යුතු සහ ව්‍යාපාරිකයන් නොවන ලෝකයක, ඔවුන් සදාකාලිකවම රත්‍රන් ආලේප කරන බැවින් නිරතුරුවම නැව්ගත නොකරනු ඇත.
gbjbaanb

4
At පැට්‍රික් කොලින්ස් මම වෙබයේ කියවන සෑම දෙයක්ම පාහේ පළමු වරට එය කිරීම ය. අවුල් නිවැරදි කිරීම පිළිබඳ ලිපි ලිවීමට කිසිවෙකු පාහේ කැමති නැත! භෞතික විද්‍යා ists යින් පවසන්නේ "පරිපූර්ණ ගෝලයක් ලබා දී ඇති බවයි ..." Comp.Scientists පවසන්නේ "ග්‍රීන්ෆීල්ඩ් සංවර්ධනයක් ලබා දී ඇති බවයි ..."
gbjbaanb

2
හොඳම විසඳුම වන්නේ අසීමිත කාලයක් ලබා දී එය නැවත ලිවීමයි; නමුත් වෙනත් කෙනෙකුගේ කේත පදනම, සාමාන්‍ය ආයතනික කාලසීමාවන් සහ යථාර්ථය; සමහර විට කළ හැකි හොඳම දේ අදහස් දැක්වීම, TODO එකක් එක් කිරීම: ප්‍රතික්‍රියාකාරකය සහ එම ප්‍රතික්‍රියාකාරකය ඊළඟ නිකුතුවට ලබා ගැනීම; ඊයේ සිදු කළ යුතු නිවැරදි කිරීම දැන් සිදු කර ඇත. හුදෙක් ප්‍රතිනිර්මාණය කිරීම පිළිබඳ මෙම වි ideal ානවාදී කතාවේ ඇති දෙය නම්, රැකියා ස්ථානයේ දේවල් සැබවින්ම ක්‍රියාත්මක වන ආකාරය සඳහා එය ගණන් නොගැනීමයි. සමහර විට ඉහළ ප්‍රමුඛතා ඇති අතර ඉතා ඉක්මනින් නියමිත දින නියමයන් ඇත. එය එසේ ය.
hsanders

8

විස්තරාත්මක විවරණයක් සහිත සංකීර්ණ ඇල්ගොරිතමයක් හෝ දිගු හා කැටි කළ කේතයක් පැහැදිලි කිරීමේ වරද කුමක්ද?

එවැනි කිසිවක් නැත. ඔබේ කාර්යය ලේඛනගත කිරීම හොඳ පුරුද්දකි.

එයින් කියැවෙන්නේ ඔබට මෙහි ව්‍යාජ ද්විභාෂාවක් තිබේ: පිරිසිදු කේතයක් එදිරිව එදිරිව ලේඛනගත කේත ලිවීම - දෙදෙනා විරුද්ධ නැත.

ඔබ අවධානය යොමු කළ යුත්තේ "සංකීර්ණ කේතය අදහස් දක්වන තාක් කල් හොඳයි" යැයි සිතීම වෙනුවට සංකීර්ණ කේතය සරල කේතයක් ලෙස සරල කිරීම හා සාරාංශ කිරීමයි.

ඉතා මැනවින්, ඔබේ කේතය සරල හා ලේඛනගත විය යුතුය .

මේ ආකාරයෙන්, වෙනත් සංවර්ධකයින් (ඔබ ද ඇතුළුව) එය කරන්නේ කුමක්දැයි වටහා ගැනීම සඳහා සමස්ත ඇල්ගොරිතම රේඛාවම රේඛාවෙන් කියවීම වෙනුවට, ඔබ සරල ඉංග්‍රීසියෙන් ලියා ඇති මිත්‍රශීලී විස්තරාත්මක විවරණය ඔවුන්ට කියවිය හැකිය.

සැබෑ. ඔබගේ සියලු පොදු API ඇල්ගොරිතම ප්‍රලේඛනයේ විස්තර කළ යුත්තේ මේ නිසා ය.

එබැවින් අර්ධ වශයෙන් මිනිසුන්ට කියවිය හැකි ක්‍රමලේඛන භාෂාවකින් ලියා ඇති සංකීර්ණ කේත කැබැල්ලක් ලිවීමෙන් පසු, කේතයේ ක්‍රියාකාරිත්වය මිත්‍රශීලී හා තේරුම්ගත හැකි ඉංග්‍රීසියෙන් විස්තර කරන විස්තරාත්මක හා සංක්ෂිප්ත අදහස් දැක්වීමක් නොකරන්නේ මන්ද?

ඉතා මැනවින්, සංකීර්ණ කේතයක් ලිවීමෙන් පසු ඔබ කළ යුත්තේ (පරිපූර්ණ ලැයිස්තුවක් නොවේ):

  • එය කෙටුම්පතක් ලෙස සලකන්න (එනම් එය නැවත ලිවීමට සැලසුම් කිරීම)
  • ඇල්ගොරිතම ඇතුළත් කිරීමේ ස්ථාන / අතුරුමුහුණත් / භූමිකාවන් / යනාදිය විධිමත් කිරීම (අතුරු මුහුණත විශ්ලේෂණය කිරීම හා ප්‍රශස්ත කිරීම, වියුක්ත කිරීම් විධිමත් කිරීම, ලේඛන පූර්ව කොන්දේසි, පශ්චාත් කොන්දේසි සහ අතුරු ආබාධ සහ ලේඛන දෝෂ අවස්ථා).
  • පරීක්ෂණ ලිවීම
  • පිරිසිදු කිරීම සහ ප්‍රතික්‍රියාකාරකය

මෙම කිසිදු පියවරක් කිරීම සුළුපටු නොවේ (එනම් සෑම එකක්ම පැය කිහිපයක් ගතවනු ඇත) සහ ඒවා කිරීමෙන් ලැබෙන විපාක ක්ෂණික නොවේ. එනිසා, මෙම පියවරයන් (පාහේ) සෑම විටම සම්මුතියකට ලක්ව ඇත (සංවර්ධකයින් විසින් කොන් කැපීම, කළමනාකරුවන් කොන් කැපීම, නියමිත දින වකවානු, වෙළඳපල අවහිරතා / වෙනත් සැබෑ ලෝක තත්වයන්, අත්දැකීම් නොමැතිකම ආදිය).

[...] සමහර ඇල්ගොරිතම සංකීර්ණයි. එබැවින් ඒවා පේළියෙන් කියවන විට තේරුම් ගැනීමට අපහසුය.

ඒපීඅයි එකක් කරන්නේ කුමක්දැයි වටහා ගැනීම සඳහා ඔබ කිසි විටෙකත් ක්‍රියාත්මක කිරීම කියවීම මත විශ්වාසය තැබිය යුතු නැත. ඔබ එය කරන විට, ඔබ ක්‍රියාත්මක කිරීම මත පදනම්ව ග්‍රාහක කේතය ක්‍රියාත්මක කරයි (අතුරුමුහුණත වෙනුවට) සහ එයින් අදහස් වන්නේ ඔබේ මොඩියුලය සම්බන්ධ කිරීම දැනටමත් නිරයට වෙඩි තබා ඇති බවයි, ඔබ ලියන සෑම නව කේත රේඛාවක් සමඟම ලේඛනගත නොවන පරායත්තතා හඳුන්වා දිය හැකිය. දැනටමත් තාක්ෂණික ණය එකතු කරමින්.

එහි සාමාන්‍ය ක්‍රියාකාරිත්වය පිළිබඳ අදහස් කිහිපයක් සහිත සංකීර්ණ ඇල්ගොරිතමයක් පැහැදිලි කිරීම ඇත්තෙන්ම නරකද?

නැත - එය හොඳයි. අදහස් කිහිපයක් එකතු කිරීම පමණක් ප්‍රමාණවත් නොවේ.

අදහස් දැක්වීමක් සමඟ සංකීර්ණ කේතය පැහැදිලි කිරීමේ වරද කුමක්ද?

එය වළක්වා ගත හැකි නම්, ඔබට සංකීර්ණ කේතයක් නොතිබිය යුතුය.

සංකීර්ණ කේත වළක්වා ගැනීම සඳහා, ඔබේ අතුරුමුහුණත් විධිමත් කිරීම, ක්‍රියාත්මක කිරීම සඳහා ඔබ වියදම් කරනවාට වඩා API සැලසුම් සඳහා ඩොලර් 8 ගුණයක් වැඩියෙන් වියදම් කරන්න (ක්‍රියාත්මක කිරීම හා සසඳන විට ස්ටෙපනොව් අවම වශයෙන් 10x ක්වත් අතුරු මුහුණත සඳහා වියදම් කිරීමට යෝජනා කළේය), සහ දැනුමෙන් ව්‍යාපෘතියක් සංවර්ධනය කිරීමට යන්න. ඔබ යම් ඇල්ගොරිතමයක් ලිවීම පමණක් නොව ව්‍යාපෘතියක් නිර්මාණය කරයි.

ව්‍යාපෘතියකට API ප්‍රලේඛනය, ක්‍රියාකාරී ලියකියවිලි, කේත / තත්ත්ව මිනුම්, ව්‍යාපෘති කළමනාකරණය යනාදිය ඇතුළත් වේ. මෙම ක්‍රියාදාමයන් කිසිවක් එකවර සිදුකිරීමට ඉක්මන් පියවරක් නොවේ (ඒවා සියල්ලම කාලය ගත කරයි, පුරෝකථනය හා සැලසුම් කිරීම අවශ්‍ය වේ, ඒ සියල්ලටම ඔබ වරින් වර ඔවුන් වෙත පැමිණ විස්තර සහිතව සංශෝධනය / සම්පූර්ණ කිරීම අවශ්‍ය වේ).


3
"API එකක් කරන්නේ කුමක්දැයි වටහා ගැනීම සඳහා ඔබ කිසි විටෙකත් ක්‍රියාත්මක කිරීම කියවීම මත විශ්වාසය තැබිය යුතු නැත." සමහර විට මෙය ඔබ භාවිතා කිරීමට කැපවී සිටින උඩුමහලක් මඟින් ඔබට සිදු කරනු ලැබේ. "පහත දැක්වෙන කැත හීත් රොබින්සන් කේතය පවතින්නේ සරල API () වෙළෙන්දා කියා සිටියද මෙම දෘඩාංගයේ නිසි ලෙස ක්‍රියා නොකරන නිසා" යන පෝරමයේ අදහස් වලින් පිරී ඇති මට විශේෂයෙන් සෑහීමකට පත්විය නොහැකි ව්‍යාපෘතියක් තිබුණි.
pjc50

6

වෙනත් සංවර්ධකයින් (ඔබ ද ඇතුළුව) එය කරන්නේ කුමක්දැයි වටහා ගැනීම සඳහා සමස්ත ඇල්ගොරිතම රේඛාවම පේළියෙන් කියවීම වෙනුවට, ඔබ සරල ඉංග්‍රීසියෙන් ලියා ඇති මිත්‍රශීලී විස්තරාත්මක විවරණය ඔවුන්ට කියවිය හැකිය.

මෙය "අදහස්" සුළු වශයෙන් අපයෝජනය කිරීමක් ලෙස මම සලකමි. ක්‍රමලේඛකයාට ඒ වෙනුවට යමක් කියවීමට අවශ්‍ය නම් සම්පූර්ණ ඇල්ගොරිතම , ඒ සඳහා අවශ්‍ය වන්නේ ක්‍රියාකාරී ලියකියවිලි ය. හරි, එබැවින් ක්‍රියාකාරී ලියකියවිලි ඇත්ත වශයෙන්ම මූලාශ්‍රයේ අදහස් දැක්වීම්වල දිස්වනු ඇත (සමහර විට ලේඛ මෙවලම් මගින් නිස්සාරණය කිරීම සඳහා), නමුත් කෘතිමව එය ඔබේ සම්පාදකයාට අදාළව අදහස් දැක්වීමක් වුවද, ඔබ ඒවා වෙනම අරමුණු සමඟ වෙනමම සලකා බැලිය යුතුය. "අදහස් හිඟ විය යුතුය" යන්නෙන් අදහස් කරන්නේ "ලියකියවිලි හිඟ විය යුතුය" හෝ "ප්‍රකාශන හිමිකම් දැන්වීම් හිඟ විය යුතුය" යන්නයි.

ශ්‍රිතයේ අදහස් යමෙකුට කියවීමට මෙන්ම කේතය සඳහා වේ. එබැවින් ඔබේ කේතයේ පේළි කිහිපයක් තේරුම් ගැනීමට අපහසු නම් සහ ඔබට ඒවා පහසුවෙන් තේරුම් ගත නොහැකි නම්, එම රේඛා සඳහා ස්ථාන දරන්නෙකු ලෙස භාවිතා කිරීමට අදහස් දැක්වීමක් ප්‍රයෝජනවත් වේ. පා is කයා සාමාන්‍ය සාරාංශය ලබා ගැනීමට උත්සාහ කරන අතරතුර මෙය ඉතා ප්‍රයෝජනවත් විය හැකි නමුත් ගැටළු කිහිපයක් තිබේ:

  • අදහස් අනිවාර්යයෙන්ම සත්‍ය නොවන අතර කේතය එය කරන දේ කරයි. එබැවින් පා er කයා ඒ සඳහා ඔබේ වචනය ගෙන යන අතර මෙය පරමාදර්ශී නොවේ.
  • පා code කයාට තවමත් කේතය තේරෙන්නේ නැත, එබැවින් ඔවුන් පසුව එය වෙත පැමිණෙන තෙක් එය වෙනස් කිරීමට හෝ නැවත භාවිතා කිරීමට තවමත් සුදුසුකම් නොමැත. ඔවුන් එය කියවන්නේ කුමක් ද?

ව්යතිරේක පවතී, නමුත් බොහෝ පා readers කයන්ට කේතයම තේරුම් ගත යුතුය. අදහස් ලිවිය යුත්තේ ඒ සඳහා සහාය වීමට මිස එය ප්‍රතිස්ථාපනය කිරීමට නොවේ, ඒ නිසා සාමාන්‍යයෙන් ඔබට උපදෙස් දෙනුයේ අදහස් දැක්වීම් "ඔබ එය කරන්නේ ඇයි" යනුවෙනි. කේතයේ ඊළඟ පේළි කිහිපය සඳහා පෙළඹවීම දන්නා පා er කයෙකුට ඔවුන් කරන දේ සහ කෙසේද යන්න බැලීමට වඩා හොඳ අවස්ථාවක් තිබේ.


5
අදහස් දැක්වීම සඳහා එක් ප්‍රයෝජනවත් ස්ථානයක්: විද්‍යාත්මක කේතයේ, ඔබට බොහෝ විට විචල්‍යයන් රාශියක් ඇතුළත් වන තරමක් සංකීර්ණ ගණනය කිරීම් කළ හැකිය. ක්‍රමලේඛකයාගේ සිහිබුද්ධිය සඳහා, විචල්‍ය නම් සැබවින්ම කෙටි ලෙස තබා ගැනීම අර්ථවත් කරයි, එබැවින් ඔබට නම් වලට වඩා ගණිතය දෙස බැලිය හැකිය. නමුත් එය පා er කයාට තේරුම් ගැනීමට අපහසුය. එබැවින් සිදුවන්නේ කුමක්ද යන්න පිළිබඳ කෙටි විස්තරයක් (හෝ වඩා හොඳ, ජර්නල් ලිපියක සමීකරණය පිළිබඳ සඳහනක් හෝ ඊට සමාන) ඇත්තෙන්ම ප්‍රයෝජනවත් විය හැකිය.
naught101

1
ough naught101: ඔව්, විශේෂයෙන් ඔබ සඳහන් කරන කඩදාසි බොහෝ විට තනි අකුරු විචල්‍ය නම් භාවිතා කර ඇත. ඔබ එකම නම් භාවිතා කරන්නේ නම් කේතය ඇත්ත වශයෙන්ම කඩදාසි අනුගමනය කරන බව දැකීම පහසුය, නමුත් එය ස්වයං පැහැදිලි කිරීමක් ලෙස කේතයේ අරමුණට පටහැනි වේ (එය කඩදාසි මගින් පැහැදිලි කර ඇත ). මෙම අවස්ථාවේ දී, එක් එක් නමක් අර්ථ දක්වා ඇති අදහස් දැක්වීමක්, එහි සැබෑ අරුත කියමින් අර්ථවත් නම් වෙනුවට ආදේශ කරයි.
ස්ටීව් ජෙසොප්

1
මම කේතයේ විශේෂිත යමක් සොයන විට (මෙම විශේෂිත නඩුව හසුරුවන්නේ කොහේද?), කේතයේ ඡේද කියවා තේරුම් ගැනීමට මට අවශ්‍ය නැත, එය සියල්ලටම පසු ස්ථානය නොවන බව සොයා ගැනීමට. ඊළඟ ඡේදය කරන්නේ කුමක්ද යන්න එක පේළියකින් සාරාංශ කරන අදහස් මට අවශ්‍යය. මේ ආකාරයෙන්, මම මගේ ගැටලුවට අදාළ කේතයේ කොටස් ඉක්මනින් සොයාගෙන උනන්දුවක් නොදක්වන තොරතුරු මඟ හරින්නෙමි.
ෆ්ලෝරියන් එෆ්

1
Lor ෆ්ලෝරියන් එෆ්: සාම්ප්‍රදායික ප්‍රතිචාරය නම් විචල්ය සහ ක්‍රියාකාරී නම් වලින් දළ වශයෙන් කේතය කුමක් දැයි දැක්විය යුතු අතර එබැවින් ඔබ සොයන දේ ගැන නිසැකවම නොවන දේ මඟ හැරීමට ඔබට ඉඩ සලසයි. මෙය සැමවිටම සාර්ථක නොවන බව මම ඔබ සමඟ එකඟ වෙමි, නමුත් සෙවීමට හෝ අඩු කියවීමට උපකාර කිරීම සඳහා සියලු කේතයන් අදහස් දැක්විය යුතු යැයි මම තරයේ එකඟ නොවෙමි . නමුත් ඔබ හරි, එය ඔබගේ කේතය (වර්ග කිරීම) යමෙකු කියවන අතර එය නීත්‍යානුකූලව තේරුම් ගැනීමට අවශ්‍ය නොවන අවස්ථාවකි.
ස්ටීව් ජෙසොප්

2
Own ස්නෝමන් මිනිසුන්ට විචල්‍ය නම් වලින් එය කළ හැකිය. විචල්ය ලැයිස්තුවක් වන ඔප් ඇප්ල්ස් හි කෙසෙල් ලැයිස්තුවක් අඩංගු කේතයක් මම දැක ඇත්තෙමි. යමෙක් ඇපල් ලැයිස්තුව සැකසීමේ කේතය පිටපත් කර විචල්‍ය නම් වෙනස් කිරීමට කරදර නොවී කෙසෙල් සඳහා එය අනුගත කළේය.
ෆ්ලෝරියන් එෆ්

5

බොහෝ විට අපට සංකීර්ණ දේ කිරීමට සිදුවේ. අනාගත අවබෝධය සඳහා ඒවා ලේඛනගත කිරීම නිසැකවම නිවැරදි ය. සමහර විට මෙම ප්‍රලේඛනය සඳහා සුදුසු ස්ථානය කේතය තුළ ඇති අතර, එමඟින් කේතය සමඟ ලේඛන යාවත්කාලීනව තබා ගත හැකිය. නමුත් වෙනම ලියකියවිලි සලකා බැලීම අනිවාර්යයෙන්ම වටී. මෙය අනෙක් පුද්ගලයින්ට ඉදිරිපත් කිරීමට පහසු විය හැකිය, රූප සටහන්, වර්ණ පින්තූර සහ යනාදිය. එවිට අදහස් දැක්වීම සාධාරණ ය:

// This code implements the algorithm described in requirements document 239.

නැත්නම් සාධාරණයි

void doPRD239Algorithm() { ...

නම් කරන ලද MatchStringKnuthMorrisPrattහෝ encryptAESහෝ කරන ලද කාර්යයන් පිළිබඳව නිසැකවම මිනිසුන් සතුටු වේ partitionBSP. තවත් අපැහැදිලි නම් විවරණයකින් පැහැදිලි කිරීම වටී. ඔබට ඇල්ගොරිතමයක් ක්‍රියාත්මක කළ කඩදාසියකට ග්‍රන්ථ නාමාවලිය හා සබැඳියක් එක් කළ හැකිය.

ඇල්ගොරිතමයක් සංකීර්ණ හා නව්‍ය හා පැහැදිලිව පෙනෙන්නට නොමැති නම්, එය අනිවාර්යයෙන්ම ලේඛනයක් වටී, අභ්‍යන්තර සමාගම් සංසරණය සඳහා පමණක් වුවද. ලේඛනය නැතිවීම ගැන ඔබ කනස්සල්ලට පත්වුවහොත් මූලාශ්‍ර පාලනයට පරීක්ෂා කරන්න.

නිලධාරිවාදයේ තරම් ඇල්ගොරිතම නොවන තවත් කේත කාණ්ඩයක් ඇත. ඔබට වෙනත් පද්ධතියක් සඳහා පරාමිතීන් සැකසිය යුතුය, නැතහොත් වෙනත් කෙනෙකුගේ දෝෂ සමඟ අන්තර් ක්‍රියා කරන්න:

/* Configure the beam controller and turn on the laser.
The sequence is timing-critical and this code must run with interrupts disabled.
Note that the constant 0xef45ab87 differs from the vendor documentation; the vendor
is wrong in this case.
Some of these operations write the same value multiple times. Do not attempt
to optimise this code by removing seemingly redundant operations.
*/

2
ඒවායේ අභ්‍යන්තර ඇල්ගොරිතමයෙන් පසුව කාර්යයන් / ක්‍රම නම් කිරීමට එරෙහිව මම තර්ක කරමි, බොහෝ විට භාවිතා කරන ක්‍රමය අභ්‍යන්තර සැලකිල්ලක් විය යුතුය, සෑම ආකාරයකින්ම ඔබේ ශ්‍රිතයේ ඉහළින්ම භාවිතා කළ ක්‍රමය සමඟ ලේඛනගත කරන්න, නමුත් එය doPRD239Algorithmමට පවසන ලෙස නොකියන්න ඇල්ගොරිතම සොයා බැලීමකින් තොරව ශ්‍රිතය ගැන කිසිවක් නැත, හේතුව MatchStringKnuthMorrisPrattසහ encryptAESකාර්යය වන්නේ ඔවුන් කරන දේ පිළිබඳ විස්තරයකින් ආරම්භ වී ක්‍රමවේදය පිළිබඳ විස්තරයක් අනුගමනය කිරීමයි.
scragar

5

මම එය කියවීමට නමුත් එහි මට අමතක වන්නේ ඔබගේ කේතය කුමක් අදහසක් ලෙස පෙනී යුතු පෙනී යුතු දේ අතර තියුණු හා පැහැදිලි මාර්ගය.

ඔබේ ඇල්ගොරිතම නොව ඔබේ අභිප්‍රාය අදහස් දැක්විය යුතු යැයි මම විශ්වාස කරමි . එනම් ඔබ අදහස් කරන්නේ ඔබ කිරීමට අදහස් කරන දෙය මිස ඔබ කරන දේ ගැන නොවේ .

උදාහරණයක් වශයෙන්:

// The getter.
public <V> V get(final K key, Class<V> type) {
  // Has it run yet?
  Future<Object> f = multitons.get(key);
  if (f == null) {
    // No! Make the task that runs it.
    FutureTask<Object> ft = new FutureTask<Object>(
            new Callable() {

              public Object call() throws Exception {
                // Only do the create when called to do so.
                return key.create();
              }

            });
    // Only put if not there.
    f = multitons.putIfAbsent(key, ft);
    if (f == null) {
      // We replaced null so we successfully put. We were first!
      f = ft;
      // Initiate the task.
      ft.run();
    }
  }
  try {
    /**
     * If code gets here and hangs due to f.status = 0 (FutureTask.NEW)
     * then you are trying to get from your Multiton in your creator.
     *
     * Cannot check for that without unnecessarily complex code.
     *
     * Perhaps could use get with timeout.
     */
    // Cast here to force the right type.
    return (V) f.get();
  } catch (Exception ex) {
    // Hide exceptions without discarding them.
    throw Throwables.asRuntimeException(ex);
  }
}

මෙහිදී සෑම පියවරක්ම කරන්නේ කුමක්ද යන්න සඳහන් කිරීමට කිසිදු උත්සාහයක් නොමැත, එහි සඳහන් වන්නේ එය කළ යුතු දෙයයි .

PS: මා සඳහන් කළ මූලාශ්‍රය මට හමු විය - කේතීකරණ භීෂණය: කේතය ඔබට පවසන්නේ කෙසේද, අදහස් ඔබට කියන්නේ ඇයි


8
පළමු අදහස: එය තවම ක්‍රියාත්මක වී තිබේද? තවම දුවන්නේ කුමක්ද? අනෙක් අදහස් සඳහා සමාන වේ. කේතය කරන්නේ කුමක්දැයි නොදන්නා කෙනෙකුට මෙය නිෂ් .ල ය.
gnasher729

1
@ gnasher729 - සන්දර්භයෙන් ගත් විට ඕනෑම අදහසක් නිෂ් less ල වනු ඇත - මෙම කේතය විස්තර කිරීමට උත්සාහ කරනවාට වඩා අභිප්‍රාය පෙන්වන අදහස් එකතු කිරීමේ නිරූපණයකි . එය ඔබට කිසිවක් නොකර සිටීම ගැන මට කණගාටුයි.
OldCurmudgeon

2
එම කේතය නඩත්තු කරන්නෙකුට සන්දර්භයක් නොමැත. කේතය කරන්නේ කුමක්දැයි සොයා ගැනීම විශේෂයෙන් අපහසු නැත, නමුත් අදහස් උදව් නොකරයි. ඔබ අදහස් ලියන්නේ නම්, ඔබේ කාලය ගත කර ඒවා ලියන විට අවධානය යොමු කරන්න.
gnasher729

BTW - එය ක්‍රියාත්මක වී ඇත්ද යන්න අදහස් දක්වන්නේ, එය ක්‍රියාත්මක කර ඇත්දැයි සොයා බැලීමට එරෙහිව චෙක්පතක් අනුගමනය කිරීමෙන් Futureඇඟවෙන්නේ - ක්‍රියාවලියට වඩා අභිප්‍රාය නිවැරදිව ලේඛනගත කිරීමයි . get()nullFuture
OldCurmudgeon

1
OldOldCurmudgeon: ඔබේ පිළිතුර මා සිතූ දෙයට ආසන්නයි, මම ඔබේ අදහස උදාහරණයක් ලෙස මෙම අදහස එක් කරමි. පිරිසිදු කේතය පැහැදිලි කිරීම සඳහා අදහස් දැක්වීමක් අවශ්‍ය නොවන අතර, කේතීකරණය වෙනත් ආකාරයකින් සිදු කළේ ඇයිද යන්න පැහැදිලි කිරීමට අදහස් දැක්වීම හොඳය. මගේ සීමිත අත්දැකීම් තුළ, කේතය ක්‍රියාත්මක වන දත්ත කට්ටලයේ අනන්‍යතාවයන් පැහැදිලි කිරීමට අදහස් දැක්වීම බොහෝ විට ප්‍රයෝජනවත් වේ, නැතහොත් කේතය බලාත්මක කිරීමට අදහස් කරන ව්‍යාපාරික නීති රීති. දෝෂයක් නිවැරදි කිරීම සඳහා එකතු කරන ලද කේතයක් අදහස් දැක්වීම හොඳ නිදසුනකි, එම දෝෂය සිදුවී ඇත්තේ දත්ත පිළිබඳ උපකල්පනයක් වැරදියි.
රැන්ඩල් ස්ටුවර්ට්

4

නමුත් එය ප්‍රමාණවත් නොවන බව අපි කවුරුත් දනිමු.

ඇත්තටම? කවදා සිටද?

හොඳ නම් සහිත හොඳින් සැලසුම් කරන ලද කේතය බොහෝ අවස්ථාවන්හිදී අවශ්‍ය ප්‍රමාණයට වඩා වැඩිය. අදහස් දැක්වීමට එරෙහි තර්ක හොඳින් දන්නා සහ ලේඛනගත කර ඇත (ඔබ සඳහන් කරන පරිදි).

නමුත් මේවා මාර්ගෝපදේශ (වෙනත් ඕනෑම දෙයක් මෙන්). දුර්ලභ අවස්ථාවෙහිදී (මගේ අත්දැකීම් අනුව, සෑම වසර 2 කට වරක් පමණ) කුඩා පැහැදිලි කාර්යයන් සඳහා ප්‍රතික්‍රියා කරන විට තත්වය වඩාත් නරක අතට හැරෙනු ඇත (කාර්ය සාධනය හෝ සහසම්බන්ධතා අවශ්‍යතා නිසා) ඉන්පසු ඉදිරියට යන්න - ඇත්ත වශයෙන්ම කුමක්ද යන්න පැහැදිලි කරමින් දීර් comment අදහස් දැක්වීමක් කරන්න. කරමින් (සහ ඔබ හොඳම භාවිතයන් උල්ලං ting නය කරන්නේ ඇයි).


7
එය ප්‍රමාණවත් නොවන බව මම දනිමි.
ෆ්ලෝරියන් එෆ්

2
කවදා සිටද? පෙනෙන විදිහට, ඔබ දැනටමත් එයට පිළිතුර දන්නවා. "හොඳයි හොඳයි නම් සමග කේතය නිර්මාණය කරන ලද වඩා වැඩි ප්රමාණවත් විශාල බහුතරයක් රෝගීන්." එබැවින්, සුළුතරයකදී එය ප්‍රමාණවත් නොවනු ඇත, එය අසන්නා අසන දේම වේ.
එලෙසෙඩිල්

3
සෑම වසර දෙකකට වරක් වඩා වැඩි වාර ගණනක් අදහස් එකතු කර ඇතැයි මා සිතන වෙනත් ජනතා කේතය තේරුම් ගැනීමට මම කවදා හෝ උත්සාහ කරමි.
ඔග්‍රේ ගීතාවලිය 33

G OgrePsalm33 - ඔවුන්ට කුඩා ක්‍රම තිබේද සහ හොඳ නම් භාවිතා කරනවාද? අදහස් නොසලකා නරක කේතය නරක ය.
ටෙලාස්ටින්

2
E ටෙලාස්ටින් අවාසනාවකට මෙන්, විශාල කේත පදනමක් මත වැඩ කරන විට, “කුඩා” ක්‍රම සහ “හොඳ” නම් එක් එක් සංවර්ධකයාට යටත් වේ (එබැවින් හොඳ අදහස් දැක්වීමකි, ඒ සඳහා). වසර 7 ක් තිස්සේ ෆ්ලාර්බිගන් ග්‍රැෆික් සැකසුම් ඇල්ගොරිතම කේතයක් ලියන සංවර්ධකයෙකුට ඔහුට සහ ඒ හා සමාන සංවර්ධකයින්ට මනාව පැහැදිලි යමක් ලිවිය හැකිය, නමුත් පර්බියානු ජාලක යටිතල පහසුකම් කේතය සංවර්ධනය කරමින් පසුගිය වසර 4 ක කාලය ගත කළ නව පුද්ගලයාට එය ගුප්ත වනු ඇත. සති 2 කට පසුව, ෆ්ලාර්බිගන් විශේෂ expert යා ඉවත් වේ.
ඔග්‍රේ ගීතාවලිය 33

2

කේතයේ මූලික අරමුණ වන්නේ යමක් කිරීමට පරිගණකයකට අණ කිරීමයි, එබැවින් හොඳ අදහස් දැක්වීමක් කිසි විටෙකත් හොඳ කේත වෙනුවට ආදේශකයක් නොවේ.

එසේ පැවසුවහොත්, ප්‍රභවයේ අදහස් වෙනත් ක්‍රමලේඛකයින් සඳහා (ඔබ ද ඇතුළුව) එක් ආකාරයක ලියකියවිලි වේ. අදහස් සෑම පියවරකදීම කේතය කරන දෙයට වඩා වියුක්ත ගැටළු පිළිබඳව අදහස් දක්වන්නේ නම්, ඔබ කරන්නේ සාමාන්‍යයට වඩා හොඳය. එම සාරාංශයේ මට්ටම ඔබ භාවිතා කරන මෙවලම සමඟ වෙනස් වේ. එකලස් කිරීමේ භාෂා චර්යාවන් සමඟ අදහස් දැක්වීම් සාමාන්‍යයෙන් මෙම ඒපීඑල් වලට වඩා අඩු “සාරාංශයක්” A←0⋄A⊣{2⊤⍵:1+3×⍵⋄⍵÷2}⍣{⍺=A+←1}⎕ඇත. මම හිතන්නේ එය විසඳීමට අදහස් කරන ගැටලුව පිළිබඳව අදහස් දැක්වීමක් සුදුසු වනු ඇත, හ්ම්?


2

කේතය ඉතා සුළු නම්, එයට පැහැදිලි කිරීමේ අදහසක් අවශ්‍ය නොවේ. කේතය සුළුපටු නොවේ නම්, පැහැදිලි කිරීමේ අදහස බොහෝ දුරට සුළුපටු නොවේ.

දැන්, සුළු නොවන ස්වාභාවික භාෂාවේ ඇති කරදරය නම්, අපගෙන් බොහෝ දෙනෙක් එය කියවීමට හෝ ලිවීමට එතරම් දක්ෂ නොවීමයි. ඔබේ ලිඛිත සන්නිවේදන කුසලතා විශිෂ්ට බව මට විශ්වාසයි, නමුත් ලිඛිත භාෂාව පිළිබඳ අඩු අවබෝධයක් ඇති අයෙක් ඔබේ වචන වරදවා වටහා ගත හැකිය.

වැරදියට අර්ථකථනය කළ නොහැකි ස්වාභාවික භාෂාව ලිවීමට ඔබ දැඩි උත්සාහයක් දරන්නේ නම්, ඔබ අවසන් වන්නේ නීතිමය ලියවිල්ලක් වැනි දෙයකි (තවද අප කවුරුත් දන්නා පරිදි ඒවා කේතයට වඩා වාචික හා තේරුම් ගැනීමට අපහසුය).

කේතය ඔබේ තර්කනය පිළිබඳ වඩාත් සංක්ෂිප්ත විස්තරයක් විය යුතු අතර, ඔබේ කේතයේ අර්ථය ගැන වැඩි විවාදයක් නොතිබිය යුතුය, මන්ද ඔබේ සම්පාදකයා සහ වේදිකාව අවසාන වශයෙන් පවසන බැවිනි.

ඔබ කිසි විටෙකත් අදහස් දැක්වීමක් නොකළ යුතු යැයි පුද්ගලිකව මම නොකියමි. ඔබේ කේතයට අදහස් දැක්වීමක් අවශ්‍ය වන්නේ ඇයි සහ ඔබ එය නිවැරදි කරන්නේ කෙසේද යන්න සලකා බැලිය යුතුය. මෙහි පිළිතුරු වල මෙය පොදු තේමාවක් බව පෙනේ.


“මිනිසෙකුට ඉංග්‍රීසි කෑල්ලක් වඩා වේගයෙන් තේරුම් ගත හැකිය, ඔහුට / ඇයට එකම අර්ථයකින් කේත කැබැල්ලක් තේරුම් ගත හැකිය (මෙහෙයුම සුළුපටු නොවන තාක් කල්)” යන ප්‍රකාශය සමඟ මා එකඟ නොවූ විට හරියටම මම සිතුවෙමි. සෑම විටම අඩු අපැහැදිලි සහ වඩා සංක්ෂිප්ත.
stephenbayer

0

තවම සඳහන් කර නැති එක් කරුණක් නම්, සමහර විට කේතයක් කරන්නේ කුමක්ද යන්න නිවැරදිව අදහස් දැක්වීම භාෂාවක් විවිධ වාක්‍ය ඛණ්ඩයක් විවිධ අරමුණු සඳහා භාවිතා කරන අවස්ථාවන්ට උපකාරී වේ. උදාහරණයක් ලෙස, සියලු විචල්‍යයන් වර්ග යැයි උපකල්පනය කර floatසලකා බලන්න:

f1 = (float)(f2+f3); // Force result to be rounded to single precision
f4 = f1-f2;

පැහැදිලිව වාත්තු බලපෑම floatකිරීමට floatතනි නිරවද්යතාවකින් තේරී පත්විණි කිරීමට ප්රතිඵලයක් බල ය; එමඟින් අදහස් දැක්වීම හුදෙක් කේතය කරන්නේ කුමක්දැයි පැවසිය හැකිය. අනෙක් අතට, එම කේතය සසඳා බලන්න:

thing.someFloatProperty = (float)(f2*0.1); // Divide by ten

මෙහි, වාත්තු කිරීමේ පරමාර්ථය වන්නේ නිවැරදිව ගණනය කිරීමේ වඩාත් කාර්යක්ෂම ආකාරයකින් සම්පාදකයා වළක්වා ගැනීමයි (f2 / 10) [එය 0.1f න් ගුණ කිරීමට වඩා නිරවද්‍ය වන අතර බොහෝ යන්ත්‍රවල එය 10.0f න් බෙදීමට වඩා වේගවත් වේ].

අදහස් දැක්වීමකින් තොරව, කලින් කේතය සමාලෝචනය කරමින් සිටි අයෙකුට සිතිය හැකිය, සම්පාදකයා කොල්ලකෑම වැළැක්වීම සඳහා එය අවශ්‍ය වනු ඇති බවටත් එය අවශ්‍ය නොවන බවටත් වැරදි වැටහීමක් ඇත. ඇත්ත වශයෙන්ම, වාත්තු භාෂාව භාෂා පිරිවිතරයන් පවසන දේ හරියටම කිරීමේ අරමුණ ඉටු කරයි: ගණනය කිරීමේ ප්‍රති result ලය තනි නිරවද්‍යතාවයකට රවුම් කිරීමට බල කරන්න යන්ත්‍රවල පවා වටකුරු කිරීම වඩා මිල අධික වනු ඇත. නළු floatනිළියෙකුට විවිධ අර්ථයන් සහ අරමුණු ගණනාවක් තිබිය හැකි බැවින්, යම් දර්ශනයක් තුළ යම් අර්ථයක් අදහස් කරන්නේද යන්න විවරණය කිරීමෙන් නියම අර්ථය අභිප්‍රාය සමඟ පෙළ ගැසී ඇති බව පැහැදිලි කර ගත හැකිය.


ජේ. සසම්භාවී ක්‍රමලේඛකයා, දෙවන උදාහරණය දෙස බලන විට, නියතය 0.1 ලියා ඇත්තේ හොඳ හේතුවක් නිසා බව තේරුම් නොගනී, මුල් ක්‍රමලේඛකයාට 'එෆ්' ටයිප් කිරීමට අමතක වූ නිසා නොව.
ඩේවිඩ් කේ

විශේෂයෙන් නිදොස්කරණය කිරීමේදී, හොඳ හේතුවක් නිසා කිසිවක් සිදු වී ඇතැයි ඔබ කිසි විටෙකත් නොසිතයි.
gnasher729

Av ඩේවිඩ්ක්: මගේ දෙවන උදාහරණ කේතයේ අරමුණ වූයේ එය පළමු කේත කැබැල්ලට වඩා වෙනස් කිරීමයි. දෙවන කේතයේ, ක්‍රමලේඛකයාගේ අභිප්‍රාය බොහෝ විට someFloatPropertyවඩාත් නිරවද්‍ය නිරූපණය රඳවා තබා ගැනීමයිf2/10 එයට හැකි උපරිම ; දෙවන වාත්තු කිරීමේ මූලික අරමුණ වන්නේ කේතය සම්පාදනය කිරීමයි. කෙසේ වෙතත්, පළමු උදාහරණයේ දී, වාත්තු එහි සාමාන්‍ය අරමුණු සඳහා පැහැදිලිවම අවශ්‍ය නොවේ (එක් සම්පාදක කාල වර්ගයක් තවත් ආකාරයකට වෙනස් කිරීම) ඔපෙරන්ඩ් දැනටමත් ඇති බැවින් float. ද්විතීයික අරමුණක් සඳහා (රවුම් කිරීම) සඳහා වාත්තු කිරීම අවශ්‍ය බව පැහැදිලි කිරීමට අදහස් දැක්වීම සේවය කරයි .
සුපර් කැට්

(float)දෙවන උදාහරණයේ ඔබ රංගන ශිල්පීන් ගැන කිසිදු අදහසක් ඉදිරිපත් කිරීමට අවශ්‍ය නැත යන මතයට මම එකඟ වෙමි . ප්‍රශ්නය වන්නේ නියත නියතය ගැන ය 0.1. 0.1" ලිවීමේ ඊළඟ ඡේදයේ) ඔබ පැහැදිලි කළේ :" එය 0.1f න් ගුණ කිරීමට වඩා නිවැරදි ය. " මම ඒක යෝජනා කරනවා එම එම ප්රකාශය විය යුතු බව වචන වේ.
ඩේවිඩ් කේ

Av ඩේවිඩ්කේ: 0.1f පිළිගත නොහැකි ලෙස නිරවද්‍ය නොවන බව මා දැන සිටියේ නම් මම නිසැකවම එම අදහස ඇතුළත් කරමි. නිරවද්‍යතාව නැතිවීම පිළිගත හැකි බව මා දැන සිටියේ නම් 0.1f භාවිතා කරමි. 0.1f ඇත්ත වශයෙන්ම ද්‍රව්‍යමය වශයෙන් 0.1 ට වඩා වේගවත් . ඒ කිසිවක් සත්‍ය යැයි මා නොදන්නේ නම්, මගේ කේතීකරණ පුරුද්ද වඩාත් සුදුසු doubleවන්නේ නියතයන් හෝ අතරමැදි ගණනය කිරීම් සඳහා වන අතර ඒවායේ වටිනාකම නිරූපණය කළ නොහැකි විය හැකිය float[භාෂාවලින් කරදරකාරී පැහැදිලි ද්වි-පාවෙන කාස්ට් අවශ්‍ය වුවද කම්මැලිකම තල්ලු කිරීම විය හැක්කේ floatනියතයන් වේගය සඳහා නොව, කරදර අවම කිරීම සඳහා ය.
supercat

-1

කේතය කරන්නේ කුමක්ද යන්න පැහැදිලි කරන අදහස් අනුපිටපත් ආකාරයකි. ඔබ කේතය වෙනස් කර අදහස් යාවත්කාලීන කිරීමට අමතක කළහොත් මෙය ව්‍යාකූලත්වයක් ඇති කරයි. මම කියන්නේ නැහැ ඒවා පාවිච්චි කරන්න එපා, ඒවා යුක්තිසහගත ලෙස භාවිතා කරන්න. මම බොබ් මාමාට දායක වෙමි: "කේතයට කිව නොහැකි දේ පමණක් අදහස් දක්වන්න".

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.