“වෙනස් නොකරන්න” යනුවෙන් සලකුණු කර ඇති කේතය මා නැවත ප්‍රතිස්ථාපනය කළ යුතුද?


150

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

නැවත ප්‍රතිනිර්මාණය කිරීමේදී, වරින් වර මට පන්ති, ක්‍රමවේදය හෝ කේත රේඛා හමු වේ

මොඩියුලය සඳහා කාලය ලබා දී ඇත. එය මේ ආකාරයෙන් කාලය ගත නොකළහොත් එය බිඳී යනු ඇත.

හෝ

මෙය වෙනස් නොකරන්න. මාව විශ්වාස කරන්න, ඔබ දේවල් බිඳ දමනු ඇත.

හෝ

SetTimeout භාවිතා කිරීම හොඳ පුහුණුවක් නොවන බව මම දනිමි, නමුත් මේ අවස්ථාවේ දී මට එය භාවිතා කිරීමට සිදුවිය

මගේ ප්‍රශ්නය නම්: කතුවරුන්ගෙන් මට එවැනි අනතුරු ඇඟවීම් හමු වූ විට කේතය නැවත ප්‍රතිනිර්මාණය කළ යුතුද (නැත, මට කතුවරුන් සමඟ සම්බන්ධ විය නොහැක)?


157
සුභ පැතුම්! ඔබ දැන් කේතයේ කර්තෘ ය.

12
එය කළ යුතු දේ සහ එය සැබවින්ම කරන්නේ කුමක්ද යන්න ඔබ දැන ගන්නා තෙක් ඔබට එය නිවැරදි කළ නොහැක (ඔබගේ වෙනස්වීම්වල සම්පූර්ණ ප්‍රතිවිපාක අවබෝධ කර ගැනීම සඳහා ඔබ දෙවැන්න දැන සිටිය යුතුය.) ගැටළුව සමමුහුර්තකරණයේ පවතින බව පෙනේ, සහ එවැනි ගැටළු ඉවත් කිරීම රැකියාව # 1 නැවත ප්‍රතිනිර්මාණය කිරීම විය යුතුය, එසේ නොමැතිනම් එක් එක් වෙනස සමඟ තත්වය නරක අතට හැරෙනු ඇත. ඔබ ඇසිය යුතු ප්‍රශ්නය එය කරන්නේ කෙසේද යන්නයි. එම ප්‍රශ්නයේ සාධාරණ භාෂා ප්‍රමාණයක් සහ වේදිකා මත යැපීමක් තිබේ. උදා: stackoverflow.com/questions/3099794/finding-threading-bugs
sdenham

14
@ Sdenham ගේ ප්‍රකාශය පසු විපරම් කිරීම: ඔබේ කේත පදනම ක්‍රියාත්මක කරන ස්වයංක්‍රීය ඒකක පරීක්ෂණ ඔබ සතුව නොමැති නම්, AFAICT සමඟ “ප්‍රතිචක්‍රීකරණය කරන මායාකාරියන් දඩයම” සඳහා කාලය නාස්ති කරනවා වෙනුවට එවැනි ඒකක පරීක්ෂණ නිර්මාණය කිරීමට ඔබේ කාලය ගත කරන ලෙස මම යෝජනා කරමි. මතකයේ. ඔබේ කේත පදනම තරයේ ක්‍රියාත්මක කරන ඒකක පරීක්ෂණ කට්ටලයක් ඔබ සතුව ඇති විට, ඔබේ කේතය තවමත් ක්‍රියාත්මක වන්නේ දැයි දැන ගැනීමට ඔබට වෛෂයික ක්‍රමයක් ඇත. සුභ පැතුම්.
බොබ් ජාවිස් - මොනිකා නැවත

17
කතුවරුන් කොතරම් ව්‍යාකූල වී ඇත්ද යත්, යමෙකු ඒ අසල හුස්ම ගන්නවා නම් කේතය බිඳී යනු ඇත, එය දැනටමත් කැඩී ගොස් ඇති අතර නිර්වචනය නොකළ හැසිරීම සිදුවන්නේ ඔවුන්ට අවශ්‍ය ආකාරයට ක්‍රියා කිරීමට ය. එය පළමුවැන්න නම්, ඔවුන්ට ධාවන තත්වයක් ඇති බව පෙනේ. sdenham ඒක හරි. එය කළ යුතු දේ හදුනා ගන්න සහ එය සැබවින්ම කරන්නේ එය යැයි නොසිතන්න.
රේ

7
ඊතන් එය එතරම් සරල නොවිය හැකිය. කේතය වෙනස් කිරීම ක්ෂණිකව නොපෙනෙන ආකාරයෙන් එය බිඳ දැමිය හැකිය. සමහර විට එය කැඩී යන්නේ මෙම වර්තමාන ප්‍රතික්‍රියාකාරකය එයට හේතු විය හැකි බව ඔබට අමතක වී ඇති නිසාය, එබැවින් ඔබ සතුව ඇත්තේ අද්භූත හේතුවක් සහිත “නව” දෝෂයකි. මෙය විශේෂයෙන් කාලය හා සම්බන්ධ වූ විට විය හැකිය.
පෝල් බ්‍රින්ක්ලි

Answers:


224

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

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

මෙන්න වඩා හොඳ උපාය මාර්ගයක්: ඔබේ කාලය භාවිතා කරන්න

  • අවදානම් සහිත මොඩියුල වලට ස්වයංක්‍රීය පරීක්ෂණ (බොහෝ විට ඒකක පරීක්ෂණ නොව ඒකාබද්ධ පරීක්ෂණ) එකතු කරන්න. විශේෂයෙන් ඔබ සඳහන් කළ අස්ථාවර මොඩියුලයන් ඔබ එහි කිසිවක් වෙනස් කිරීමට පෙර සම්පූර්ණ පරීක්ෂණ කට්ටලයක් අවශ්‍ය වේ.

  • ප්‍රතික්‍රියාකාරකය මඟින් ඔබට පරීක්ෂණ ගෙන ඒමට අවශ්‍ය බිටු පමණි. අවශ්‍ය වෙනස්කම් අවම කිරීමට උත්සාහ කරන්න. එකම ව්‍යතිරේකය වන්නේ ඔබේ පරීක්ෂණ මඟින් දෝෂ අනාවරණය වූ විට - වහාම ඒවා නිවැරදි කරන්න (සහ ඔබ එය ආරක්ෂිතව කළ යුතු මට්ටමට ප්‍රතික්‍රියා කරන්න).

  • ඔබේ සගයන්ට "බාලදක්ෂ බාලදක්ෂ මූලධර්මය" (AKA "අවස්ථාවාදී ප්‍රතිනිර්මාණය කිරීම" ) උගන්වන්න , එබැවින් කණ්ඩායම නව අංග එකතු කිරීමට පටන් ගත් විට (හෝ දෝෂ නිවැරදි කිරීමට), ඔවුන් වෙනස් කළ යුතු කේත පදනමේ කොටස් හරියටම වැඩි දියුණු කර ප්‍රතික්‍රියා කළ යුතුය, අඩු නොවේ, වැඩි නොවේ.

  • කණ්ඩායම සඳහා ෆෙදර්ගේ "උරුම කේතය සමඟ effectively ලදායී ලෙස වැඩ කිරීම" පොතේ පිටපතක් ලබා ගන්න.

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

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


70
පහත් කොට සැලකීමට මා පෙළඹී ඇත, නමුත් මම වැළකී සිටිමි. බහුවිධ ව්‍යාපෘති පිළිබඳ මෙම මානසිකත්වය වඩාත් නරක නිෂ්පාදනයක් කරා ගෙන යන බව මම දැක ඇත්තෙමි. අවසානයේදී අසමත්වීම් සිදු වූ විට, ඒවා බොහෝ විට ව්‍යසනකාරී වන අතර ඒවා සවි කිරීම නිසා ඒවා නිවැරදි කිරීමට අපහසු වේ. මම නිරන්තරයෙන් මා දකින රොන් මඩ සවි කර ඇති අතර, එය නිරාකරණය කරන විට හෝ නොදන්නා ගැටළු කිසිවක් ඉතිරි නොවන තරමට එය වඩාත් නරක අතට හැරෙන බව පෙනේ; එය සමස්තයක් වශයෙන් විශාල ප්ලස් වේ. අනාගත සංවර්ධනය සඳහා කේතය වඩා හොඳය. කාලයාගේ ඇවෑමෙන් නවයක් ඉතිරි වේ, නමුත් නොසලකා හරින ලද ගැටළුවක් තවත් උග්‍ර විය හැකිය.
ආරොන්

98
අදහස් දැක්වීමක් සහිත ඕනෑම කේතයක් "මොඩියුලයට දේවල් කිරීමට යම් කාලයක් ලබා දීමට කාලය එළඹ ඇත. එය මේ ආකාරයෙන් කාලය ගත නොකළහොත් එය බිඳී යනු ඇත" යනුවෙන් දැනටමත් දෝෂයක් ඇති බව මම තර්ක කරමි . දිනුම් ඇදීමේ වාසනාව දෝෂයට හසු නොවීමයි.
17 of 26

10
Of 17of26: අනිවාර්යයෙන්ම දෝෂයක් නොවේ. සමහර විට ඔබ තෙවන පාර්ශවීය පුස්තකාල සමඟ වැඩ කරන විට, එය ක්‍රියාත්මක කිරීම සඳහා ඉලක්කය තුළ සියලු ආකාරයේ "අලංකාර" සහන ලබා දීමට ඔබට බල කෙරෙනු ඇත.
whatsisname

30
Of 17of26: කණුවක ඇති මොඩියුලයක දෝෂ ඇති බවට සැක කෙරේ නම්, ඕනෑම ආකාරයක ප්‍රතිචක්‍රීකරණයකට පෙර පරීක්ෂණ එකතු කිරීම ඊටත් වඩා වැදගත් වේ. එම පරීක්ෂණ මඟින් දෝෂය අනාවරණය වූ විට, ඔබට එම මොඩියුලය වෙනස් කිරීමේ අවශ්‍යතාවයක් ඇති අතර, එය වහාම ප්‍රතිචක්‍රීකරණය කිරීමේ නීත්‍යානුකූලභාවයක් ඇත. පරීක්ෂණ මඟින් කිසිදු දෝෂයක් අනාවරණය නොවන්නේ නම්, කේතය එලෙසම තබන්න.
ඩොක් බ්‍රවුන්

17
A ආරොන්: ඔබ පරීක්ෂණ එකතු කිරීම හෝ බාලදක්ෂ බාලදක්ෂ මූලධර්මය අනුගමනය කිරීම නිසා නිෂ්පාදනවල ගුණාත්මකභාවය පහත වැටෙනු ඇතැයි ඔබ සිතන්නේ ඇයිදැයි මට තේරෙන්නේ නැත.
ඩොක් බ්‍රවුන්

140

ඔව්, ඔබ අනෙක් අංග එකතු කිරීමට පෙර කේතය නැවත ප්‍රතික්‍රියා කළ යුතුය.

මෙවැනි අදහස් දැක්වීමේ ඇති කරදරය නම් ඒවා කේත පදනම ක්‍රියාත්මක වන පරිසරයේ විශේෂිත තත්වයන් මත රඳා පවතින බවය. නිශ්චිත ස්ථානයක වැඩසටහන්ගත කළ කාලය කල් ඉකුත්වීම සැබවින්ම අවශ්‍ය විය හැකිය.

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

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

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


47
හොඳම පිළිතුර මෙතැනින්; ඉතා නරකයි එය d නකමකි. ඉහත පිළිගත් පිළිතුර හොඳ උපදෙස් නොවේ, විශේෂයෙන් අවධාරණය වන්නේ "විනාශය" යන්නයි. මම පසුගිය වසරේ ගත කළේ විශාලතම (~ 10 ^ 6LOC මගේ කොටස සඳහා), උරුමය-එස්තර්, මා මෙතෙක් දැක ඇති විස්මිත කේතය, සහ මා සතුව ඇති දුම්රිය සුන්බුන් නිවැරදි කිරීම පුරුද්දක් කර ගනිමි. කාලය, එය මා වැඩ කරන සංරචකයේ කොටසක් නොවුනත්. මෙය කිරීමෙන් මම සොයාගෙන ඇත්තේ dev කණ්ඩායම නොදැන සිටි දෝෂයන්ය (අපගේ අවසාන පරිශීලකයින් විය හැක). ඇත්ත වශයෙන්ම, මට උපදෙස් දී ඇත. එහි ප්‍රති .ලයක් ලෙස නිෂ්පාදනය වැඩි දියුණු වේ.
ආරොන්

10
මම එය ප්‍රතිනිර්මාණය කිරීමක් ලෙස නොකියමි, නමුත් දෝෂ නිවැරදි කිරීම.
Paŭlo Ebermann

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

10
ආරොන් ඒ සඳහා කළමනාකරණ / සංවර්ධක සහාය ලබා ගැනීමට ඔබ වාසනාවන්තයි. බොහෝ පරිසරවල දුර්වල සැලසුම් සහ කේත නිසා ඇති වූ දන්නා සහ නොදන්නා දෝෂ ස්වාභාවික දේ ලෙස පිළිගනු ලැබේ.
රුඩොල්ෆ් ඕලා

5
comnocomprende මම තර්ක කරන්නේ ඔබ ඒ සඳහා පරීක්ෂණ කිහිපයක් ලිවීමට තරම් පද්ධතිය හොඳින් වටහාගෙන නොමැති නම්, එය ක්‍රියාත්මක වන ආකාරය වෙනස් කිරීමේ ව්‍යාපාරයක් ඔබට නොමැති බවයි.
පැට්‍රික් එම්

60

මගේ ප්‍රශ්නය නම්: කතුවරුන්ගෙන් එවැනි අනතුරු ඇඟවීම් හමු වූ විට මම කේතය නැවත සකස් කළ යුතුද?

නැත, හෝ අවම වශයෙන් තවම නැත. ස්වයංක්‍රීය පරීක්ෂණ මට්ටම ඉතා අඩු බව ඔබ ගම්‍ය කරයි. විශ්වාසයෙන් යුතුව ප්‍රතික්‍රියා කිරීමට පෙර ඔබට පරීක්ෂණ අවශ්‍ය වේ.

දැන් අපට වෙනත් දෙයක් කඩ නොකර කිසිදු අංගයක් එක් කිරීමට තවදුරටත් නොහැකි ය

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

මෙය පැරණි කේත පදනමක් බවට පත්ව ඇති බවක් පෙනේ, එබැවින් ඔබ එය ටිකක් වෙනස් ලෙස සැලකිය යුතුය.

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

ඔබ දෝෂයක් නිවැරදි කරන සෑම අවස්ථාවකම, දෝෂය නිවැරදි බව සනාථ කරන පරීක්ෂණ නඩුවක් එක් කරන්න. මෙය සෘජු ප්‍රතිගාමී වීම වළක්වයි.

ඔබ නව අංගයක් එකතු කරන විට, නව අංගය අපේක්ෂිත පරිදි ක්‍රියාත්මක වන බවට අවම වශයෙන් මූලික පරීක්ෂණයක්වත් එක් කරන්න.

සමහර විට "උරුම කේතය සමඟ ective ලදායී ලෙස වැඩ කිරීම" හි පිටපතක් ලබා ගත හැකිද?

පවතින කේතය නැවත ප්‍රතික්‍රියා කිරීමට මට මාස කිහිපයක් ලබා දෙන ලදි.

පරීක්ෂණ ආවරණය වැඩි කිරීමෙන් ආරම්භ කරන්න. වැඩිපුරම බිඳෙන ප්‍රදේශ වලින් ආරම්භ කරන්න. වඩාත්ම වෙනස් වන ප්‍රදේශ සමඟ ආරම්භ කරන්න. ඔබ නරක මෝස්තර හඳුනාගත් පසු ඒවා එකින් එක ප්‍රතිස්ථාපනය කරන්න.

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


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

2
හරි. හෝ භාවිතා කළ හැකි පිරිවිතර පරීක්‍ෂණයක් නොමැති නම්, පෙර හැසිරීම ඇත්ත වශයෙන්ම මෘදුකාංගය සඳහා ගෙවන හෝ උනන්දුවක් දක්වන පුද්ගලයින් විසින් අපේක්‍ෂා කරන්නේද යන්න.
bdsl

සමහර විට "උරුම කේතය සමඟ ective ලදායී ලෙස වැඩ කිරීම" හි පිටපතක් ලබා ගත හැකිද? එම පොත කියවීමට ඔහුට සති කීයක් ගතවේද? සහ කවදාද: රැකියා ස්ථානයේ වැඩ කරන කාලය තුළ, රාත්‍රියේදී සෑම කෙනෙකුම නිදා සිටින විට?
බිලාල් බෙගුරාජ්

23

ජී. කේ. චෙස්ටර්ටන්ගේ වැට මතක තබා ගන්න : මාර්ගයක් ඉදිකර ඇත්තේ මන්දැයි ඔබට වැටහෙන තුරු වැටකට වැටෙන්න එපා.

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

ඔබේ ඉලක්කය වන්නේ කේතය කරන්නේ කුමක්ද යන්න සහ එය එවකට අනතුරු ඇඟවීමකින් සලකුණු කළේ ඇයි සහ අනතුරු ඇඟවීම නොසලකා හැරියහොත් කුමක් සිදුවේද යන්න පිළිබඳ අවබෝධයක් ලබා ගැනීමයි.

ඊට පෙර, මම "ස්පර්ශ නොකරන්න" යනුවෙන් සලකුණු කර ඇති කේතය ස්පර්ශ නොකරමි.


4
OP පවසන්නේ "නැත, මට කතුවරුන් සමඟ සම්බන්ධ විය නොහැක".
FrustratedWithFormsDesigner

5
මට කතුවරුන් සමඟ සම්බන්ධ වීමට හෝ කිසිදු ලේඛනයක් නොමැත.
kukis

21
uk කුකිස්: ඔබට කතුවරුන්, ඕනෑම වසම් විශේෂ experts යින් සම්බන්ධ කර ගත නොහැකි අතර, ප්‍රශ්නයට ලක්වූ කේතයට අදාළ ඊමේල් / විකී / ලියකියවිලි / පරීක්ෂණ අවස්ථා සොයාගත නොහැකිද? හොඳයි, එසේ නම් එය මෘදුකාංග පුරාවිද්‍යාවේ පූර්ණ පර්යේෂණ ව්‍යාපෘතියක් මිස සරල ප්‍රතිනිර්මාණය කිරීමේ කාර්යයක් නොවේ.
9000

12
කේතය පැරණි වීම සහ කතුවරුන් ඉවත්ව යාම අසාමාන්‍ය දෙයක් නොවේ. ඔවුන් තරඟකරුවෙකු වෙනුවෙන් වැඩ කිරීම අවසන් කර ඇත්නම් එය සාකච්ඡා කිරීම යමෙකුගේ එන්.ඩී.ඒ උල්ලං may නය කළ හැකිය. අවස්ථා කිහිපයකදී කතුවරුන් ස්ථිරවම ලබා ගත නොහැක: පී.කේ.සිප් ගැන ෆිල් කැට්ස්ගෙන් විමසීමට ඔබට නොහැකිය.
pjc50

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

6

ඔබ පෙන්වූ අදහස් වැනි අදහස් සහිත කේතයක් ප්‍රතිචක්‍රීකරණය කළ යුතු දේවල් ලැයිස්තුවේ ඉහළින්ම සිටී නම්, එසේ කිරීමට මට කිසියම් හේතුවක් තිබේ නම් පමණි . කාරණය නම්, කේතය එතරම් නරක ලෙස ගඳ ගසන බැවින්, ඔබ එය අදහස් දැක්වීම් හරහා පවා ගඳ ගසයි. මෙම කේතයට ඕනෑම නව ක්‍රියාකාරිත්වයක් ගෙන ඒමට උත්සාහ කිරීම තේරුමක් නැති දෙයක් වන අතර, එවැනි කේත වෙනස් වීමට අවශ්‍ය වූ වහාම මිය යා යුතුය.

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

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

එබැවින්, කාලය ඉකුත්වී ඇති අවස්ථාවකදී: කේතය බලා සිටින්නේ කුමක් දැයි ඔබ හරියටම වටහා ගන්නා තෙක් එය තබන්න, ඉන්පසු ඔබ එය ඉවත් කිරීමට ඉදිරියට යාමට පෙර කාලය හඳුන්වා දීමට හේතුව නිවැරදි කරන්න.

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


1
සමහර විට කේතය ක්ලඩ්ජ්-අප් අවුල් ජාලයක් බවට පත්වන්නේ එය සිලිකන් පූර්ව නිෂ්පාදන සාම්පල මත නිවැරදිව ක්‍රියා කළ යුතු නිසාය. ක්‍රියාකාරීත්වයේ ස්වභාවය අනුව , කේතය කිසි විටෙකත් දෝෂ සහිත චිප්ස් මත ධාවනය කිරීමට අවශ්‍ය නොවන්නේ නම් කේතය ප්‍රතිස්ථාපනය කිරීම හොඳ අදහසක් විය හැකි නමුත් නව කේතයක් අවශ්‍ය වන ඉංජිනේරු විශ්ලේෂණ මට්ටමකින් තොරව කේතය වෙනස් කිරීම හොඳ නැත. අදහස.
supercat

up සුපර්කැට් මගේ එක් කරුණක් වූයේ ප්‍රතිචක්‍රීකරණය මගින් හැසිරීම මනාව ආරක්ෂා කළ යුතු බවයි. එය හැසිරීම ආරක්ෂා නොකරන්නේ නම්, එය මගේ පොතේ ප්‍රතිනිර්මාණය කිරීමට වඩා වැඩි ය (සහ එවැනි උරුම කේත සමඟ කටයුතු කිරීමේදී අතිශයින්ම භයානක ය).
cmaster - මොනිකා නැවත ස්ථාපනය කරන්න

5

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

නමුත් ඔබ ප්‍රතික්‍රියාකාරකය කළ යුතු නම් ...

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


5

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


4

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

මෙම අවස්ථාවෙහිදී, ප්‍රතික්‍රියාකාරකය කළ යුතුද යන ප්‍රශ්නය නොමේරූ ය (එයට නිශ්චිත ආකාරයකින් 'ඔව්' යන්නෙන් පිළිතුරු ලැබෙනු ඇතත්).

මෙහි ඇති ප්‍රධාන ගැටළුව නම් (සමහර පිළිතුරු වල සඳහන් කර ඇති පරිදි) ඔබ උපුටා දක්වන අදහස් තදින්ම පෙන්නුම් කරන්නේ කේතයට තරඟ කොන්දේසි හෝ මෙහි සාකච්ඡා කර ඇති වෙනත් සමගාමී / සමමුහුර්තකරණ ගැටලු ඇති බවයි. හේතු කිහිපයක් නිසා මේවා විශේෂයෙන් දුෂ්කර ගැටළු වේ. පළමුවෙන්ම, ඔබ සොයාගෙන ඇති පරිදි, සම්බන්ධයක් නැති බව පෙනෙන්නට තිබීම ගැටළුව අවුලුවාලිය හැකිය (වෙනත් දෝෂ වලටද මෙම බලපෑම ඇති කළ හැකි නමුත් සමගාමී දෝෂ සෑම විටම පාහේ සිදු වේ.) දෙවනුව, ඒවා හඳුනා ගැනීම ඉතා අසීරු ය: දෝෂය බොහෝ විට පවතින ස්ථානයක පෙනී යයි වේලාවෙන් හෝ කේතයෙන් දුරස්ථව ඇති අතර, එය හඳුනා ගැනීමට ඔබ කරන ඕනෑම දෙයක් එය ඉවතට යාමට හේතු විය හැක ( හයිසන්බග්ස්). තෙවනුව, සමගාමී මුදල් දෝෂ පරීක්ෂා කිරීමේදී ඉතා අපහසු වේ. අර්ධ වශයෙන්, එය සංයුක්ත පිපිරීම නිසා ය: එය අනුක්‍රමික කේතයට ප්‍රමාණවත් තරම් නරක ය, නමුත් සමගාමී ක්‍රියාත්මක කිරීමේ අන්තර් සම්බන්ධතා එකතු කිරීමෙන් එය අනුක්‍රමික ගැටළුව සැසඳීමේදී වැදගත් නොවන තැනට ඇද දමයි. ඊට අමතරව, හොඳ පරීක්ෂණ නඩුවක් පවා ඉඳහිට පමණක් ගැටලුව අවුලුවනු ඇත - නැන්සි ලෙව්සන් ගණනය කළේ තෙරැක් 25 හි ඇති මාරාන්තික දෝෂ වලින් එකක් බවයිලකුණු 350 ක් පමණ සිදුවී ඇත, නමුත් දෝෂය යනු කුමක්දැයි ඔබ නොදන්නේ නම් හෝ එකක් තිබේ නම්, පුනරාවර්තන කීයක් test ලදායී පරීක්ෂණයක් කරයිදැයි ඔබ නොදනී. මීට අමතරව, මෙම පරිමාණයෙන් ස්වයංක්‍රීය පරීක්ෂණ පමණක් කළ හැකි අතර, පරීක්ෂණ රියදුරු සියුම් කාල සීමාවන් පැනවීමට ඉඩ ඇති අතර එමඟින් එය කිසි විටෙකත් දෝෂය අවුලුවන්නේ නැත (හයිසන්බග්ස් නැවත).

POSIX pthreads භාවිතා කරන කේත සඳහා හෙල්ග්‍රින්ඩ් වැනි සමහර පරිසරවල සමගාමී මුදල් පරික්ෂා කිරීම සඳහා මෙවලම් කිහිපයක් ඇත , නමුත් මෙහි විශේෂතා අපි නොදනිමු. ඔබේ පරිසරය සඳහා සුදුසු මෙවලම් තිබේ නම්, පරීක්ෂණ ස්ථිතික විශ්ලේෂණයන් සමඟ අතිරේක කළ යුතුය (නැතහොත් එය වෙනත් මාර්ගයක්ද?).

, සංග්රාහකයන් (සහ පවා සකසන, ක්රියාත්මක වීමේදී) ඉතා ප්රති-ඉවෙන් දුෂ්කරතාවය එකතු කිරීමට බොහෝ විට සමහර විට එහි නූල්-ආරක්ෂාව ගැන තර්ක කරන්න බව ක්රම කේතය ප්රතිසංවිධානය කිරීම නිදහස් (සමහර විට හොඳම ප්රසිද්ධ නඩුව වන්නේ ද්විත්ව පරීක්ෂා ලොක් අයිඩියම්, සමහර පරිසරයන් (ජාවා, සී ++ ...) එය සුවපත් කිරීම සඳහා වෙනස් කර ඇත.)

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


1
අදහස් දැක්වීමේදී "ධාවන තත්වය" ඔබ දකින්නේ කොතැනින්ද? එය ඇඟවෙන්නේ කොතැනින්ද? කේතය බැලීමේ වාසියක් නොමැතිව ඔබ මෙහි තාක්ෂණික උපකල්පන රාශියක් සිදු කරයි.
රොබට් හාවි

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

3

මම ඉතා විශාල කේත පදනමක් සමඟ කටයුතු කරන අතර පවතින කේත නැවත ප්‍රතිනිර්මාණය කිරීමට මට මාස කිහිපයක් ලබා දෙන ලදී. ප්‍රතික්‍රියාකාරක ක්‍රියාවලිය අවශ්‍ය වන්නේ ඉතා ඉක්මනින් අපගේ නිෂ්පාදනයට නව අංග රැසක් එක් කිරීමට අවශ්‍ය වන බැවිනි [...]

නැවත ප්‍රතිනිර්මාණය කිරීමේදී, වරින් වර මට පන්තියේ, ක්‍රමයේ හෝ කේත රේඛා හමු වේ [“මෙය ස්පර්ශ නොකරන්න!”]

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

එම උපක්‍රමශීලී මොඩියුලයන් කරන්නේ කුමක්දැයි සොයාගෙන එය කුඩා ගැටළු වලට බිඳ දමන්න (මුල් කතුවරුන් කළ යුතුව තිබූ දේ). නඩත්තු කළ හැකි කේතයක් අවුල් ජාලයකින් ලබා ගැනීම සඳහා හොඳ කොටස් නැවත සකස් කළ යුතු අතර නරක කොටස් නැවත ලිවිය යුතුය .


2

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

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

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

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

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

දැන්, අපි සියල්ලන්ම අපේම ටෝඩෝ වෙත ආපසු යමු. අප දන්නා දේ වැඩි කාලයක් තිබුනේ නම් අපගේ කේත නිර්මාණ තුළ වැඩිදියුණු කළ හැකිය.


1

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

කෙසේ වෙතත්, ඒවා නිවැරදි කිරීම සඳහා විශාල උත්සාහයක් අවශ්‍ය වනු ඇති බවට අනතුරු ඇඟවීමකි.

ඉතා මැනවින්, ඔබට ගැටලුව කුමක්දැයි සොයා බලා එය නිවැරදිව විසඳා ගත හැකිය. උදාහරණයක් වශයෙන්:

මොඩියුලය සඳහා කාලය ලබා දී ඇත. එය මේ ආකාරයෙන් කාලය ගත නොකළහොත් එය බිඳී යනු ඇත.

මොඩියුලය A භාවිතා කිරීමට සුදානම් වූ විට හෝ එය සැකසූ විට එය නිසි ලෙස දක්වන්නේ නැති බව මෙයින් තරයේ යෝජනා කරයි. සමහර විට මෙය ලියූ පුද්ගලයාට A මොඩියුලය නිවැරදි කිරීමට කරදර වීමට අවශ්‍ය නොවීම හෝ කිසියම් හේතුවක් නිසා විය නොහැක. මෙය සිදුවීමට බලා සිටින ව්‍යසනයක් සේ පෙනේ, මන්ද එය නිසි අනුපිළිවෙලට වඩා වාසනාව සමඟ ගනුදෙනු කළ යුතු කාල පරායත්තතාවයක් යෝජනා කරයි. මම මෙය දුටුවා නම්, එය නිවැරදි කිරීමට මට බොහෝ අවශ්‍ය වනු ඇත.

මෙය වෙනස් නොකරන්න. මාව විශ්වාස කරන්න, ඔබ දේවල් බිඳ දමනු ඇත.

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

SetTimeout භාවිතා කිරීම හොඳ පුහුණුවක් නොවන බව මම දනිමි, නමුත් මේ අවස්ථාවේ දී මට එය භාවිතා කිරීමට සිදුවිය.

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

එයින් කියැවෙන්නේ, මෙම ආකාරයේ නිවැරදි කිරීම් ඔබේ ප්‍රතික්‍රියාකාරකයේ විෂය පථයෙන් පිටත නම්, මෙම කේතය තුළ ප්‍රතික්‍රියාකාරක කිරීමට උත්සාහ කිරීම ඔබේ උත්සාහයේ විෂය පථය සැලකිය යුතු ලෙස වැඩි කළ හැකි බවට ඇඟවුම් කරයි.

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


2
පැරණි ගැටළු කිසිසේත්ම නොපවතින තැනට කොන්දේසි වෙනස් වී ඇති අතර අනතුරු ඇඟවීමේ අදහස් පැරණි සිතියම්වල ඇති ස්ථානය මෙන් වී ඇත, “මෙන්න මකරුන් වන්න.” කිමිදෙමින් තත්වය කුමක්දැයි ඉගෙන ගන්න, නැතහොත් එය ඉතිහාසයට ගොස් ඇති බව බලන්න.

2
තථ්‍ය ලෝකයේ, සමහර උපාංග විශ්වාසදායක සූදානම පිළිබඳ ඇඟවීමක් සපයන්නේ නැත, ඒ වෙනුවට උපරිම සූදානම් නොකළ කාලයක් නියම කරයි. විශ්වසනීය හා කාර්යක්ෂම සූදානම පිළිබඳ ඇඟවීම් හොඳයි, නමුත් සමහර විට ඒවා නොමැතිව දේවල් භාවිතා කිරීම හිර වී ඇත.
supercat

1
up සුපර්කැට් සමහර විට නැත. මෙහි අදහස් දැක්වීමෙන් අපට පැවසිය නොහැක. එබැවින් වෙන කිසිවක් නොමැති නම්, විශේෂතා සමඟ අදහස් දැක්වීම වැඩි දියුණු කිරීම විමර්ශනය කිරීම වටී.
ඩේවිඩ් ෂ්වාට්ස්

1
Av ඩේවිඩ්ස්වාර්ට්ස්: අදහස් දැක්වීම නිසැකවම වඩා ප්‍රයෝජනවත් විය හැකි නමුත් සමහර විට උපකරණයක් එහි පිරිවිතරයන්ට අනුකූලව කටයුතු කිරීමට අපොහොසත් වන සියලු නිශ්චිත ක්‍රම සිතියම් ගත කිරීමට ක්‍රමලේඛකයෙකු කොපමණ කාලයක් ගත කළ යුතුද යන්න පැහැදිලි නැත, විශේෂයෙන් ගැටළුව අපේක්ෂා කරන්නේද යන්න පැහැදිලි නැත තාවකාලික හෝ ස්ථිර දෙයක් වීමට.
supercat

1

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

ඇත්ත වශයෙන්ම සිදුවන්නේ කුමක්ද යන්න පිළිබඳ පූර්ණ අවබෝධයකින් තොරව කේතය අනුමාන කිරීම සහ අත්හදා බැලීම් සහ දෝෂයන් මගින් වර්ධනය කර ඇත.

මෙයින් අදහස් වන්නේ:

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

  2. කේතය වෙනස් නොකිරීම අවදානම් සහගත ය . කේතයට අපැහැදිලි දෝෂ සහ ධාවන තත්වයන් අඩංගු වීමේ ඉහළ සම්භාවිතාවක් ඇත. කේතයේ තීරණාත්මක දෝෂයක් සොයාගනු ලැබුවහොත් හෝ ඉහළ ප්‍රමුඛතා ව්‍යාපාර අවශ්‍යතාවයක් මෙම කේතය කෙටි දැනුම්දීමකින් වෙනස් කිරීමට බල කරයි නම්, ඔබ සිටින්නේ දැඩි කරදරයක ය. දැන් ඔබට සියලු ගැටළු 1 හි දක්වා ඇත, නමුත් කාල පීඩනය යටතේ! තවද, කේතයේ ඇති එවැනි “අඳුරු ප්‍රදේශ” එය ස්පර්ශ කරන කේතයේ වෙනත් කොටස් පැතිරීමට හා ආසාදනය වීමේ ප්‍රවණතාවක් ඇත.

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

මෙයින් අදහස් කරන්නේ කාර්යය සාමාන්‍ය ප්‍රතිනිර්මාණයට වඩා වැඩි ඉල්ලුමක් ඇති බවයි. ඔබට එය සැබෑ සංවර්ධන කාර්යයක් ලෙස උපලේඛනගත කිරීමට සිදුවනු ඇත.

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


-1

මා අසන ප්‍රශ්නය නම් යමෙකු ලිව්වේ ඇයි, මුලින් සංස්කරණය නොකරන්න.

මම බොහෝ කේතයන් මත වැඩ කර ඇති අතර සමහර ඒවා අවලස්සන වන අතර එකල ලබා දී ඇති සීමාවන් තුළ වැඩ කිරීමට බොහෝ කාලයක් හා වෑයමක් දැරීය.

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

වෙනත් වචන වලින් කිවහොත්, මගේ ජීවිතයට වඩා හොඳ දේවල් කිරීමට මට ඇති බැවින් මෙය නැවත නිවැරදි කිරීමට මට අවශ්‍ය නැත.

සංස්කරණය නොකරන්න යැයි කීමෙන්, අප දැන ගැනීමට යන සෑම දෙයක්ම අප දන්නා බව පැවසීමේ ක්‍රමයකි, එබැවින් අනාගතයේදී අපි කිසි විටෙකත් අලුත් දෙයක් ඉගෙන නොගන්නෙමු.

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

මෙම මැජික් කේතය වටා පද්ධතියට කිසිදු පරීක්ෂණයක් නොමැති බවත්, එබැවින් ඕනෑම වෙනස්වීමකින් පසුව කේතය නිවැරදිව ක්‍රියාත්මක වන බව කිසිවෙකුට තහවුරු කළ නොහැකි බවත් මම විශ්වාස කරමි. ගැටළු කේතය වටා චරිත පරීක්ෂණ සිදු කිරීම සෑම විටම පළමු පියවර වේ. කේතය වෙනස් කිරීමට පෙර, පරායත්තතා බිඳ දමා කේතය පරීක්‍ෂාවට ලක් කරන්නේ කෙසේද යන්න පිළිබඳ උපදෙස් සඳහා මයිකල් ෆෙදර්ස් විසින් රචිත "ලෙගසි කේතය සමඟ වැඩ කිරීම" බලන්න.

මම හිතන්නේ අවසානයේදී, ප්‍රතිචක්‍රීකරණය කිරීම සහ නිෂ්පාදිතය ස්වාභාවික හා කාබනික ආකාරයකින් පරිණාමය වීමට ඉඩ දීම සීමා කිරීම කෙටි දැක්මක්.


2
පූර්ව පිළිතුරු 9 කින් පැහැදිලි කර ඇති කරුණු වලට වඩා සැලකිය යුතු කිසිවක් මෙය ඉදිරිපත් කරන බවක් නොපෙනේ
gnat
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.