තනි යොමු යොමු සහිත පෞද්ගලික ක්‍රම නරක ශෛලියක්ද?


141

සාමාන්‍යයෙන් මම පන්තියේ විවිධ ස්ථානවල නැවත භාවිතා කරන ක්‍රියාකාරිත්වය සංයුක්ත කිරීමට පුද්ගලික ක්‍රම භාවිතා කරමි. නමුත් සමහර විට මට විශාල පොදු ක්‍රමයක් ඇත, එය කුඩා පියවර වලට බෙදිය හැකිය, සෑම එකක්ම එහි පෞද්ගලික ක්‍රමයට. මෙය පොදු ක්‍රමය කෙටි කරයි, නමුත් ක්‍රමවේදය කියවන ඕනෑම කෙනෙකුට විවිධ පුද්ගලික ක්‍රම වෙත පනින්නට බල කිරීම කියවීමේ හැකියාව හානි කරයි යැයි මම බිය වෙමි.

මේ සම්බන්ධයෙන් සම්මුතියක් තිබේද? එක් එක් කැබැල්ල නැවත භාවිතා කළ නොහැකි වුවද දිගු මහජන ක්‍රම තිබීම හෝ ඒවා කුඩා කැබලිවලට කැඩීම වඩා හොඳද?



7
සියලුම පිළිතුරු මත පදනම් වේ. මුල් කතුවරුන් සැමවිටම සිතන්නේ ඔවුන්ගේ රවියෝලි කේතය වඩාත් කියවිය හැකි බවයි; පසුකාලීන කතුවරුන් එය රවියෝලි ලෙස හැඳින්වේ.
ෆ්‍රෑන්ක් හිල්මන්

5
පිරිසිදු කේතය කියවීමට මම යෝජනා කරමි. එය මෙම ශෛලිය නිර්දේශ කරන අතර උදාහරණ රාශියක් ඇත. "වටේ පැනීම" ගැටලුවට විසඳුමක් ද එහි ඇත.
කැට්

1
මම හිතන්නේ මෙය ඔබගේ කණ්ඩායම හා කුමන කේත රේඛා අඩංගුද යන්න මත රඳා පවතී.
බලාපොරොත්තුවෙන්

1
STRUTS හි සමස්ත රාමුවම තනි-භාවිත Getter / Setter ක්‍රම මත පදනම් වූවක් නොවේද?
සිබොබ්ස්

Answers:


204

නැත, මෙය නරක විලාසිතාවක් නොවේ. ඇත්ත වශයෙන්ම එය ඉතා හොඳ විලාසිතාවකි.

නැවත භාවිතා කිරීමේ හැකියාව නිසා පුද්ගලික කාර්යයන් පැවතිය යුතු නොවේ. එය නිසැකවම ඒවා නිර්මාණය කිරීමට එක් හොඳ හේතුවක් වන නමුත් තවත් දෙයක් තිබේ: වියෝජනය.

ඕනෑවට වඩා කරන ශ්‍රිතයක් සලකා බලන්න. එය පේළි සියයක් දිග වන අතර එය තර්ක කළ නොහැකිය.

ඔබ මෙම ශ්‍රිතය කුඩා කැබලිවලට බෙදුවහොත්, එය තවමත් පෙර මෙන් වැඩ කරයි, නමුත් කුඩා කැබලිවලට. විස්තරාත්මක නම් තිබිය යුතු වෙනත් කාර්යයන් එය හඳුන්වයි. ප්‍රධාන ශ්‍රිතය පොතක් මෙන් පාහේ කියවනු ලැබේ: A කරන්න, පසුව B කරන්න, පසුව C කරන්න, ආදිය. එය හඳුන්වන කාර්යයන් එක් ස්ථානයකට පමණක් කැඳවිය හැකි නමුත් දැන් ඒවා කුඩා වේ. ඕනෑම විශේෂිත ශ්‍රිතයක් අනෙක් කාර්යයන්ගෙන් සැන්ඩ්බොක්ස් කර තිබිය යුතුය: ඒවාට විවිධ විෂය පථ ඇත.

ඔබ විශාල ගැටලුවක් කුඩා ගැටළු වලට දිරාපත් කරන විට, එම කුඩා ගැටළු (කාර්යයන්) එක් වරක් පමණක් භාවිතා කළත් / විසඳූවත්, ඔබට ප්‍රතිලාභ කිහිපයක් ලැබේ:

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

  • යොමු ස්ථානය දැන් විචල්‍යයක් ප්‍රකාශ කිරීමට සහ භාවිතා කිරීමට නොහැකි වී ඇති අතර, පසුව එය වටා රැඳී සිට පේළි 100 කට පසුව නැවත භාවිතා කරන්න. මෙම ශ්‍රිතවලට විවිධ විෂය පථ ඇත.

  • පරීක්ෂා කිරීම. පංතියක රාජ්‍ය සාමාජිකයින් පරීක්ෂා කිරීම පමණක් අවශ්‍ය වන අතර ඇතැම් පෞද්ගලික සාමාජිකයින් ද පරීක්ෂා කිරීම යෝග්‍ය වේ. දීර් function ශ්‍රිතයක තීරණාත්මක අංශයක් තිබේ නම් එය පරීක්‍ෂාවෙන් ප්‍රයෝජන ගත හැකි නම්, එය වෙනම ශ්‍රිතයකට උකහා නොගෙන ස්වාධීනව පරීක්ෂා කළ නොහැක.

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

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


7
ක්‍රමවත් වියුක්ත කිරීම් සහ හොඳ නම් පවත්වා ගැනීම අමතක නොකරන්න. සම්පූර්ණ වස්තුවක් එහි සැඟවී තිබේ නම් පුදුම නොවන්න.
candied_orange

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

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

7
"පරීක්ෂා කිරීම" උණ්ඩය සැක සහිත IMO වේ. ඔබේ පෞද්ගලික සාමාජිකයන් පරීක්‍ෂා කිරීමට අවශ්‍ය නම්, ඔවුන් බොහෝ විට ඔවුන්ගේම පන්තියට අයත් විය හැකිය. පංතියක් / අතුරු මුහුණතක් උකහා ගැනීමේ පළමු පියවර වන්නේ ක්‍රමයක් උපුටා ගැනීමයි.
මැතිව් ගින්ඩන්

6
තථ්‍ය ක්‍රියාකාරිත්වය ගැන කිසිදු තැකීමක් නොමැතිව රේඛා අංක, කේත කොටස් සහ විචල්‍ය විෂය පථය අනුව ශ්‍රිතයක් බෙදීම භයානක අදහසකි, ඊට වඩා හොඳ විකල්පය එය එක් ශ්‍රිතයක් තුළ ඉතිරි කිරීම යැයි මම තර්ක කරමි. ඔබ ක්‍රියාකාරීත්වය අනුව ශ්‍රිත බෙදිය යුතුය. ඩේව්ගුවර්ගේ පිළිතුර බලන්න . ඔබගේ පිළිතුරෙහි (නම් සහ ගැටලු ගැන සඳහන් කරමින්) ඔබ මේ පිළිබඳව තරමක් ඉඟි කරයි, නමුත් ප්‍රශ්නයට අදාළව එහි වැදගත්කම හා අදාළත්වය සැලකිල්ලට ගෙන මෙම අංගයට වැඩි අවධානයක් අවශ්‍ය යැයි මට හැඟෙන්නේ නැත.
බර්න්හාර්ඩ් බාර්කර්

36

එය බොහෝ විට හොඳ අදහසක්!

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

function step1(){
  // ...
  step2(zarb, foo, biz);
}

function step2(zarb, foo, biz){
  // ...
  step3(zarb, foo, biz, gleep);
}

function step3(zarb, foo, biz, gleep){
  // ...
}

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

කෙසේ වෙතත් , තනි පැහැදිලි අරමුණක් ඉටු කරන පිරිසිදු ශ්‍රිතයකට පේළි එකක් හෝ කිහිපයක් උපුටා ගැනීමට ඔබ සමත් වී ඇත්නම් (එක් වරක් පමණක් කැඳවනු ලැබුවද ), එවිට ඔබ කියවීමේ හැකියාව වැඩි දියුණු කර ඇත:

function foo(){
  f = getFrambulation();
  g = deglorbFramb(f);
  r = reglorbulate(g);
}

තථ්‍ය-ලෝක තත්වයන් තුළ මෙය පහසු නොවනු ඇත, නමුත් ඔබ ඒ ගැන දීර් long කාලයක් තිස්සේ සිතන්නේ නම් පිරිසිදු ක්‍රියාකාරිත්වයේ කොටස් බොහෝ විට විහිළුවට ලක් කළ හැකිය.

ඔබට හොඳ ක්‍රියා පද සහිත කාර්යයන් ඇති විට සහ ඔබේ දෙමව්පියන්ගේ ක්‍රියාකාරිත්වය ඔවුන් අමතන විට සහ ගද්‍යයේ ඡේදයක් මෙන් ප්‍රායෝගිකව කියවන විට ඔබ නිවැරදි මාර්ගයේ සිටින බව ඔබ දැන ගනු ඇත.

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


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

34
RanFrankHileman සාධාරණ ලෙස කිවහොත්, කිසිම සංවර්ධකයෙකු ඔහුගේ හෝ ඇයගේ පූර්වගාමියාගේ කේතය අගය කරන බවක් මා දැක නැත.
ටී. සර්

4
සියලුම ගැටලු සඳහා මූලාශ්‍රය පෙර සංවර්ධකයා!
ෆ්‍රෑන්ක් හිල්මන්

18
ArTars මා පෙර සංවර්ධකයා වූ විට මම කිසි විටෙකත් පෙර සංවර්ධකයාට ප්‍රශංසා කර නැත.
IllusiveBrian

3
දිරාපත් වීමේ හොඳ දෙය නම් ඔබට පසුව රචනා කළ හැකිය foo = compose(reglorbulate, deglorbFramb, getFrambulation);
:;

19

පිළිතුර එය තත්වය මත බෙහෙවින් රඳා පවතී. Public ස්නෝමන් විශාල මහජන ක්‍රියාකාරිත්වය බිඳ දැමීමේ ධනාත්මක කරුණු ආවරණය කරයි, නමුත් මතක තබා ගැනීම වැදගත් වන්නේ ඔබ නිවැරදිව සැලකිලිමත් වන බැවින් negative ණාත්මක බලපෑම් ද ඇති විය හැකි බැවිනි.

  • අතුරු ආබාධ සහිත පෞද්ගලික කාර්යයන් රාශියක් කේත කියවීමට අපහසු වන අතර තරමක් බිඳෙන සුළුය. මෙම පෞද්ගලික කාර්යයන් එකිනෙකාගේ අතුරු ආබාධ මත රඳා පවතින විට මෙය විශේෂයෙන් සත්‍ය වේ. තදින් බැඳී ඇති ක්‍රියාකාරකම් වලින් වළකින්න.

  • සාරාංශ කාන්දු වේ. මෙහෙයුමක් සිදු කරන්නේ කෙසේද යන්න හෝ දත්ත ගබඩා කරන්නේ කෙසේද යන්න මවාපෑම සතුටක් වුවත්, එය සිදු වන අවස්ථා තිබේ, ඒවා හඳුනා ගැනීම වැදගත්ය.

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

  • අධික ලෙස දිරාපත් වූ කේතය සෑම විටම අනෙක් අයට වඩා කතුවරයාට පැහැදිලි ය. මෙයින් අදහස් කරන්නේ එය තවමත් අන් අයට පැහැදිලි කළ නොහැකි බවයි, නමුත් එය ලිවීමේ වේලාවට bar()පෙර කැඳවිය යුතු පරිපූර්ණ අර්ථයක් ඇති බව පැවසීම පහසුය foo().

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

නිරපේක්ෂ දිග නොව ඔවුන්ගේ අභ්‍යන්තර සහජීවනය හා සම්බන්ධතාවය මත පදනම්ව කාර්යයන් දිරාපත් කරන්න.


6
කියවීමේ හැකියාව නොසලකා හරින්න, දෝෂ වාර්තා කිරීමේ අංගය දෙස බලමු: දෝෂයක් සිදුවී ඇති බව පරිශීලකයා වාර්තා කරන්නේ නම් MainMethod(ලබා ගැනීමට පහසුය, සාමාන්‍යයෙන් සංකේත ඇතුළත් වන අතර ඔබට සංකේත විරූපණ ගොනුවක් තිබිය යුතුය) එය පේළි 2k (රේඛා අංක කිසි විටෙකත් ඇතුළත් නොවේ දෝෂ වාර්තා) සහ එය එම රේඛාවලින් 1k ට සිදුවිය හැකි NRE ය, මම ඒ ගැන සොයා බැලුවහොත් මට ද ned ුවම් ලැබෙනු ඇත. නමුත් ඔවුන් මට කිව්වොත් එය සිදුවී ඇති SomeSubMethodAඅතර එය පේළි 8 ක් වන අතර ව්‍යතිරේකය එන්.ආර්.ඊ එකක් නම්, මම බොහෝ විට එය සොයාගෙන එය නිවැරදි කරමි.
ඩර් කොම්මිසාර්

2

IMHO, සංකීර්ණතා බිඳ දැමීමේ මාධ්‍යයක් ලෙස හුදෙක් කේත කුට්ටි අදින්නේ වටිනාකම, බොහෝ විට අතර ඇති සංකීර්ණතාවයේ වෙනසට සම්බන්ධ වේ:

  1. කේතය කරන්නේ කුමක් ද යන්න පිළිබඳ සම්පූර්ණ හා නිවැරදි මානව භාෂා විස්තරයක්, එය කෙළවරේ සිදුවීම් හසුරුවන ආකාරය සහ

  2. කේතයම.

කේතය විස්තරයට වඩා බොහෝ සංකීර්ණ නම්, පේළියේ කේතය ශ්‍රිත ඇමතුමකින් ප්‍රතිස්ථාපනය කිරීමෙන් අවට කේතය තේරුම් ගැනීමට පහසු වේ. අනෙක් අතට, සමහර සංකල්ප මිනිස් භාෂාවට වඩා පරිගණක භාෂාවෙන් කියවිය හැකිය. w=x+y+z;උදාහරණයක් ලෙස, වඩා කියවිය හැකි යැයි මම සලකමි w=addThreeNumbersAssumingSumOfFirstTwoDoesntOverflow(x,y,z);.

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


2
ඔබගේ ක්‍රියාකාරී නාමය නොමඟ යවන සුළුය. W = x + y + z හි කිසියම් ආකාරයක පිටාර ගැලීමක් පාලනය කරන කිසිවක් නොපෙන්වන අතර ක්‍රමයේ නම වෙනත් ආකාරයකින් ඇඟවුම් කරයි. ඔබගේ ශ්‍රිතය සඳහා වඩා හොඳ නමක් වනුයේ "addAll (x, y, z)", උදාහරණයක් ලෙස හෝ "එකතුව (x, y, z)" ය.
ටී. සර්

6
පුද්ගලික ක්‍රම ගැන කතා කරන බැවින් , මෙම ප්‍රශ්නය සී වෙත යොමු නොවනු ඇත. කෙසේ වෙතත්, එය මගේ අදහස නොවේ - ක්‍රම අත්සන පිළිබඳ උපකල්පනය සමඟ කටයුතු කිරීමේ අවශ්‍යතාවයකින් තොරව ඔබට එකම ශ්‍රිතය “එකතුව” ලෙස හැඳින්විය හැකිය. ඔබේ තර්කනය අනුව, ඕනෑම පුනරාවර්තන ක්‍රමයක් උදාහරණයක් ලෙස "DoThisAssumingStackDoesntOverflow" ලෙස හැඳින්විය යුතුය. "FindSubstringAssumingStartingPointIsInsideBounds" සඳහාද එයම වේ.
ටී. සර්

1
වෙනත් වචන වලින් කිවහොත්, මූලික උපකල්පන, ඒවා කුමක් වුවත් (සංඛ්‍යා දෙකක් පිටාර ගැලෙන්නේ නැත, තොගය පිටාර ගැලෙන්නේ නැත, දර්ශකය නිවැරදිව සම්මත විය) ක්‍රමයේ නමෙහි නොතිබිය යුතුය. ඒවා ලේඛනගත කළ යුතුය, ඇත්ත වශයෙන්ම, අවශ්‍ය නම්, නමුත් ක්‍රම අත්සන මත නොවේ.
ටී. සර්

1
ArTars: මම නම සමඟ මඳක් මුහුණට මුහුණ ලා සිටියෙමි, නමුත් ප්‍රධාන කරුණ නම් (සාමාන්‍යයට මාරුවීම වඩා හොඳ උදාහරණයක් නිසා) සන්දර්භය තුළ "(x + y + z + 1) / 3" දකින ක්‍රමලේඛකයෙකු වනු ඇත. නිර්වචනය හෝ ඇමතුම් අඩවිය දෙස බලන කෙනෙකුට වඩා, ඇමතුම් කේතය ලබා දී ඇති සාමාන්‍යය ගණනය කිරීම සඳහා එය සුදුසු ක්‍රමයක් දැයි දැන ගැනීම වඩා හොඳය int average3(int n1, int n2, int n3). “සාමාන්‍ය” ශ්‍රිතය බෙදීමෙන් අදහස් වන්නේ එය අවශ්‍යතා සඳහා සුදුසු දැයි බැලීමට අවශ්‍ය කෙනෙකුට ස්ථාන දෙකක බැලිය යුතු බවයි.
සුපර් කැට්

1
උදාහරණයක් ලෙස අපි C # ගතහොත්, ඔබට ඇත්තේ එක් "සාමාන්‍ය" ක්‍රමයක් පමණි, එය ඕනෑම පරාමිති ගණනක් පිළිගැනීමට හැකි වේ. ඇත්ත වශයෙන්ම, c # හි, එය ඕනෑම සංඛ්‍යා එකතුවකට වඩා ක්‍රියා කරයි - තවද බොරතෙල් ගණිතය කේතයට සම්බන්ධ කිරීමට වඩා තේරුම් ගැනීම පහසු බව මට විශ්වාසයි.
ටී. සර්

2

එය සමබර කිරීමේ අභියෝගයකි.

ෆිනර් වඩා හොඳයි

පුද්ගලික ක්‍රමය මඟින් අඩංගු කේතයට name ලදායී ලෙස නමක් සපයන අතර සමහර විට අර්ථවත් අත්සනක් (එහි පරාමිතීන්ගෙන් අඩක් මුළුමනින්ම අපැහැදිලි, ලේඛනගත නොවන අන්තර් පරායත්තතා සහිත තාවකාලික ට්‍රම්ප් දත්ත නොවේ නම් ).

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

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

අමතර නම් කිරීම මඟින් කේතය ස්වයං ලේඛනගත කිරීම සඳහා උපකාරී වන හෙයින් පසුකාලීන නඩත්තු කිරීම ද උපකාරී වේ.

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

එය ඉතා හොඳ වන තුරු

කුඩා කේත කැබලි වලට නම් දීම ඕනෑවට වඩා කළ හැකි අතර, ඕනෑවට වඩා කුඩා පෞද්ගලික ක්‍රම සමඟ අවසන් විය හැකිද? ෂුවර්. පහත දැක්වෙන රෝග ලක්ෂණ එකක් හෝ කිහිපයක් පෙන්නුම් කරන්නේ ක්‍රම ප්‍රයෝජනවත් නොවන තරමට කුඩා වන බවයි:

  • එකම අත්‍යවශ්‍ය තර්කනය සඳහා විකල්ප අත්සන් සැබවින්ම නිරූපණය නොකරන අධික බර පැටවීම, නමුත් තනි ස්ථාවර ඇමතුම් තොගයක්.
  • එකම සංකල්පය නැවත නැවත යොමු කිරීම සඳහා භාවිතා කරන සමාන පද ("විනෝදාත්මක නම් කිරීම")
  • XxxInternalහෝ DoXxxවිශේෂයෙන්, ඒවා හඳුන්වාදීමේදී ඒකාබද්ධ ක්‍රමයක් නොමැති නම්, වැනි පරිපූර්ණ නම් කිරීමේ සැරසිලි ගොඩක් .
  • අවුල්සහගත නම් ක්‍රියාත්මක කිරීමට වඩා දිගු වේ LogDiskSpaceConsumptionUnlessNoUpdateNeeded

1

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

නමුත් සමහර විට මට විශාල පියවරක් ඇත, එය කුඩා පියවර වලට බෙදිය හැකිය

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

පුද්ගලික ක්‍රමවලට දිරාපත් නොවන්නේ ඇයි? හේතු කිහිපයක් මෙන්න:

  • තද බැඳීම සහ පරීක්ෂණ හැකියාව. ඔබගේ පොදු ක්‍රමයේ ප්‍රමාණය අඩු කිරීමෙන්, ඔබ එහි කියවීමේ හැකියාව වැඩි දියුණු කර ඇත, නමුත් සියලු කේත තවමත් තදින් එකට බැඳී ඇත. ඔබට තනි පුද්ගලික ක්‍රම පරීක්ෂා කළ හැකිය (පරීක්ෂණ රාමුවක උසස් අංග භාවිතා කරමින්), නමුත් ඔබට පුද්ගලික ක්‍රමවලින් ස්වාධීනව පොදු ක්‍රමය පහසුවෙන් පරීක්ෂා කළ නොහැක. මෙය ඒකක පරීක්ෂණ මූලධර්මවලට පටහැනිය.
  • පන්ති ප්‍රමාණය හා සංකීර්ණත්වය. ඔබ ක්‍රමයක සංකීර්ණතාව අඩු කර ඇත, නමුත් ඔබ පන්තියේ සංකීර්ණතාව වැඩි කර ඇත. පොදු ක්‍රමය කියවීමට පහසුය, නමුත් පන්තියට දැන් කියවීමට වඩා අපහසු වන්නේ එහි හැසිරීම නිර්වචනය කරන තවත් කාර්යයන් ඇති බැවිනි. මගේ මනාපය කුඩා තනි වගකීම් පන්ති සඳහා වන බැවින් දීර් method ක්‍රමයක් පන්තිය ඕනෑවට වඩා කරන බවට ලකුණකි.
  • පහසුවෙන් නැවත භාවිතා කළ නොහැක. බොහෝ විට සිදුවන්නේ කේතයක් පරිණත වන විට නැවත භාවිතා කිරීමේ හැකියාව ප්‍රයෝජනවත් වේ. ඔබගේ පියවර පුද්ගලික ක්‍රමවේදයන්හි තිබේ නම්, ඒවා කෙසේ හෝ මුලින් උපුටා නොගෙන වෙනත් තැනක නැවත භාවිතා කළ නොහැක. වෙනත් තැනක පියවරක් අවශ්‍ය වූ විට එය පිටපත් කිරීම දිරිමත් කළ හැකිය.
  • මේ ආකාරයෙන් බෙදීම අත්තනෝමතික විය හැකිය. මම තර්ක කරන්නේ දීර් public මහජන ක්‍රමවේදයක් බෙදීමෙන් ඔබ වගකීම් පංතිවලට බෙදීමට තරම් සිතුවිලි හෝ සැලසුම් සලකා බැලිය යුතු නැති බවයි. සෑම පන්තියක්ම නිසි නමක්, ලියකියවිලි සහ පරීක්ෂණ වලින් යුක්ති සහගත කළ යුතු අතර පුද්ගලික ක්‍රමයක් එතරම් සැලකිල්ලක් නොදක්වයි.
  • ගැටලුව සඟවයි. එබැවින් ඔබ ඔබේ පොදු ක්‍රමය කුඩා පෞද්ගලික ක්‍රමවලට බෙදීමට තීරණය කර ඇත. දැන් කිසිදු ගැටළුවක් නැත! වැඩි වැඩියෙන් පුද්ගලික ක්‍රම එකතු කිරීමෙන් ඔබට තව තවත් පියවර එකතු කළ හැකිය! ඊට පටහැනිව, මෙය විශාල ගැටළුවක් යැයි මම සිතමි. පංතියකට සංකීර්ණත්වය එක් කිරීම සඳහා රටාවක් එය ස්ථාපිත කරන අතර පසුව දෝෂ නිවැරදි කිරීම් සහ විශේෂාංග ක්‍රියාත්මක කිරීම සිදු කරනු ඇත. වැඩි කල් යන්නට මත්තෙන් ඔබේ පෞද්ගලික ක්‍රම වර්ධනය වන අතර ඒවා බෙදීමට සිදුවේ.

නමුත් ක්‍රමවේදය කියවන ඕනෑම කෙනෙකුට විවිධ පෞද්ගලික ක්‍රම වෙත පනින්නට බල කිරීම කියවීමේ හැකියාවට හානි කරයි යැයි මම කණගාටු වෙමි

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


1
මට එකඟ නොවීමට සිදුවනු ඇත. ඕනෑවට වඩා හෝ නොමේරූ වියුක්ත කිරීම අනවශ්‍ය ලෙස සංකීර්ණ කේතයකට මග පාදයි. පුද්ගලික ක්‍රමයක් යනු අන්තර් සම්බන්ධිත හා වියුක්ත විය හැකි මාර්ගයක පළමු පියවර විය හැකි නමුත් මෙහි ඔබේ ප්‍රවේශය මඟින් කිසි විටෙකත් සංචාරය කිරීමට අවශ්‍ය නොවන ස්ථානවල සැරිසැරීමට යෝජනා කරයි.
WillC

1
ඔබ එන කොහෙද මට තේරෙනවා, ඒත් මම කේතය එක් විශ්රාම වැටුප් වගේ දැනෙනවා හිතන්නේ එය සංඥා ගැන ය අහනවා වේ වඩා හොඳ නිර්මාණ සඳහා සූදානම්. නොමේරූ වියුක්ත කිරීම යනු ඔබ එම ගැටලුවට මුහුණ දීමට පෙර මෙම අතුරුමුහුණත් සැලසුම් කිරීමයි.
සැමුවෙල්

මම මෙම ප්රවේශය සමඟ එකඟ වෙමි. ඇත්ත වශයෙන්ම, ඔබ TDD අනුගමනය කරන විට, එය ස්වභාවික දියුණුවයි. අනෙක් පුද්ගලයා පවසන්නේ එය ඕනෑවට වඩා නොමේරූ වියුක්ත කිරීමක් බවයි, නමුත් පරීක්ෂණය සමත් වීම සඳහා එය පුද්ගලික ක්‍රමයකින් සැබවින්ම ක්‍රියාත්මක කිරීමට වඩා වෙනම පන්තියක (අතුරු මුහුණතක් පිටුපස) මට අවශ්‍ය ක්‍රියාකාරීත්වය ඉක්මනින් සමච්චලයට ලක් කිරීම වඩා පහසු බව මට පෙනේ. .
සදාකාලික 21
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.