ඔබට නොතේරෙන දෙයක් වර්ධනය කිරීමට එකඟ නොවන්න

ඔබට නොතේරෙන දෙයක් වර්ධනය කිරීමට එකඟ නොවන්න

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

මට කියන්නට අවශ්‍ය කාරණය නම්, කේතයේ ගුණාත්මක භාවය (සහ අවසාන නිෂ්පාදනය) කේතය සැලසුම් කරන සහ ලියන පුද්ගලයින් තමන් කරන දේ පිළිබඳව කෙතරම් දැනුවත්ද යන්න හා සමීපව සම්බන්ධ වීමයි.

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

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

පළමු මට්ටමේ අවබෝධය: එය ක්රියා නොකරන්නේ ඇයි?

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

සම්මත යෝජනා ක්රමය මේ වගේ ය:

  1. ගැටලුව ඇති කරන කේත කැබැල්ල සොයා ගන්න (මෙය කරන්නේ කෙසේද යන්න වෙනම මාතෘකාවකි, මම එය මගේ උරුම කේතය පිළිබඳ පොතේ ආවරණය කරමි)
  2. මෙම කොටසෙහි වෙනස්කම් කරන්න
  3. දෝෂය නිරාකරණය කර ඇති බවත් ප්‍රතිගාමී දෝෂයක් සිදුවී නැති බවත් සහතික කර ගන්න

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

පළමු ප්රවේශය නිවැරදි ය. Steve McConnell ඔහුගේ Code Complete නම් පොතේ පැහැදිලි කරන පරිදි (මා විසින් එය නිර්දේශ කරන්නේ, මාර්ගය වන විට), අපි කේතයේ යමක් වෙනස් කරන සෑම අවස්ථාවකම, එය යෙදුමට බලපාන ආකාරය විශ්වාසයෙන් යුතුව අනාවැකි කීමට අපට හැකි විය යුතුය. මම මතකයෙන් උපුටා දක්වමි, නමුත් ඔබ බලාපොරොත්තු වූ ආකාරයට දෝෂ නිරාකරණයක් ක්‍රියා නොකරන්නේ නම්, ඔබ ඉතා කලබල විය යුතු අතර ඔබ ඔබේ සම්පූර්ණ ක්‍රියාකාරී සැලැස්ම ප්‍රශ්න කළ යුතුය.

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

දෙවන මට්ටමේ අවබෝධය: එය ක්රියා කරන්නේ ඇයි?

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

මෙම අවස්ථාවේදී, ඔබට එකවර දෝෂ වාර්තා දෙකක් ලැබුණු බව සිතමු: පළමු අවස්ථාව A ගැන, දෙවන අවස්ථාව B ගැන. අවස්ථා දෙකේදීම, යම්කිසි වැරැද්දක් සිදු වේ. ඒ අනුව, ඔබ මුලින්ම පළමු දෝෂය විසඳන්න. XNUMX මට්ටමේ අවබෝධය සඳහා අප විසින් වර්ධනය කරන ලද මූලධර්ම භාවිතා කරමින්, ඔබ ගැටලුවට අදාළ කේතය ගැඹුරින් හාරා, එය Scenario A හි සිදු වන ආකාරයට යෙදුම හැසිරීමට හේතු වන්නේ මන්දැයි සොයා බලන්න, සහ ඔබට අවශ්‍ය ප්‍රතිඵලය ලබා දෙන සාධාරණ ගැලපීම් කරන්න. . සියල්ල හොඳින් සිදුවෙමින් පවතී.

ඉන්පසුව ඔබ තත්වය B වෙත ගමන් කරයි. ඔබ දෝෂයක් අවුලුවාලීමේ උත්සාහයක් ලෙස එම අවස්ථාව නැවත නැවතත් කරයි, නමුත්-පුදුමයක්! - දැන් සෑම දෙයක්ම කළ යුතු පරිදි ක්රියා කරයි. ඔබගේ අනුමානය තහවුරු කිරීම සඳහා, ඔබ A දෝෂය මත වැඩ කරන අතරතුර ඔබ විසින් සිදු කරන ලද වෙනස්කම් අවලංගු කරන අතර, B දෝෂය නැවත පැමිණේ. ඔබගේ දෝෂ නිරාකරණය ගැටළු දෙකම විසඳා ඇත. වාසනාවන්තයි!

ඔබ මෙය කිසිසේත් ගණන් ගත්තේ නැත. ඔබ A අවස්ථාවෙහි දෝෂය නිවැරදි කිරීමට ක්‍රමයක් ඉදිරිපත් කර ඇති අතර එය B අවස්ථාවට ක්‍රියා කළේ මන්දැයි නොදනී. මෙම අවස්ථාවෙහිදී, කාර්යයන් දෙකම සාර්ථකව නිම කර ඇති බව සිතීමට ඉතා පෙළඹේ. මෙය තරමක් තාර්කික ය: කාරණය වූයේ දෝෂ ඉවත් කිරීමයි, එසේ නොවේ ද? නමුත් කාර්යය තවම අවසන් නැත: ඔබගේ ක්‍රියාවන් B අවස්ථාවෙහි දෝෂය නිවැරදි කළේ මන්දැයි ඔබ තවමත් සොයා බැලිය යුතුය. ඇයි? මක්නිසාද යත් එය වැරදි මූලධර්ම මත ක්‍රියාත්මක විය හැකි අතර, එවිට ඔබට වෙනත් මාර්ගයක් සෙවීමට අවශ්‍ය වනු ඇත. එවැනි අවස්ථා සඳහා උදාහරණ කිහිපයක් මෙන්න:

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

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

තුන්වන මට්ටමේ අවබෝධය: එය ක්රියා කරන්නේ ඇයි?

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

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

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

සහ යම් අවස්ථාවක දී ඔබට හදිසියේම වැටහෙනවා - හෝ සමහර විට යමෙකුගෙන් ඇසීමට - සමහර විට රාමුව F ඔබට X විශේෂාංගය සමඟ ගැළපීමක් ලබා නොදෙන බව සමහර විට එම කාලය සහ ශ්‍රමය සම්පූර්ණයෙන්ම වැරදියි.

වරක් මා වගකිව යුතු ව්‍යාපෘතියක වැඩ කරන අතරතුර එවැනි දෙයක් සිදු විය. මෙය සිදු වූයේ ඇයි? X ශ්‍රිතය කුමක්ද සහ එය F Framework හා සම්බන්ධ වන්නේ කෙසේද යන්න පිළිබඳව මට එතරම් අවබෝධයක් නොතිබූ නිසා. මා කළ යුතුව තිබුණේ කුමක්ද? වෙනත් මොඩියුල සඳහා කළ දේ පුනරුච්චාරණය කිරීම හෝ X විශේෂාංගය කළ යුත්තේ මෙයයි යන වචනය ලබා නොගෙන, අපේක්ෂිත ක්‍රියාමාර්ගය අපේක්ෂිත ප්‍රතිඵලය කරා ගෙන යන ආකාරය පැහැදිලිව පැහැදිලි කරන ලෙස සංවර්ධන කාර්යය පවරන පුද්ගලයාගෙන් අසන්න.

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

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

අවබෝධයේ හතරවන මට්ටම: ???

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

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න