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


169

මම ඇත්තටම විශාල ව්‍යාපෘති ලියන්නේ නැහැ. මම විශාල දත්ත සමුදායක් පවත්වා ගෙන යන්නේ හෝ මිලියන ගණනක් කේත සමඟ කටයුතු නොකරමි.

මගේ කේතය මූලික වශයෙන් "ස්ක්‍රිප්ටින්" වර්ගයේ දේවල් - ගණිතමය ක්‍රියාකාරකම් පරීක්ෂා කිරීමට හෝ යමක් අනුකරණය කිරීමට - "විද්‍යාත්මක ක්‍රමලේඛනය". මම මේ දක්වා වැඩ කර ඇති දීර් est තම වැඩසටහන් කේත පේළි සිය ගණනක් වන අතර මා වැඩ කරන බොහෝ වැඩසටහන් 150 ක් පමණ වේ.

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

මගේ කේතයේ ශෛලිය කැටි ගැසී ඇති අතර යල් පැන ගිය අදහස් වලින් යමක් කිරීමට විකල්ප ක්‍රම සඳහන් කරමින් හෝ කේත රේඛා පිටපත් කර ඇත. විචල්ය නාම සෑම විටම ඉතා ලස්සන හා විස්තරාත්මකව ආරම්භ වන අතර, මම උදාහරණ ලෙස දේවල් එකතු කරන විට හෝ වෙනස් කරන විට, යමෙකුට පරීක්‍ෂා කිරීමට අවශ්‍ය අලුත් දෙයක්, කේතය ඉහළින් ආවරණය කර නැවත ලියනු ලැබේ. මේ කාරණය ඉක්මනින් පරීක්ෂා කළ යුතු යැයි මට හැඟෙන නිසා මම දැන් රාමුවක් ඇති විට මම කපටි විචල්‍ය නම් භාවිතා කිරීමට පටන් ගනිමි.

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

කුඩා කේත කැබලි ලිවීම සඳහා ඒකක පරීක්ෂණ අවශ්‍යද? OOP ගැන කුමක් කිව හැකිද? විශාල ව්‍යාපෘතිවල වැඩ කිරීමට වඩා “විද්‍යාත්මක ක්‍රමලේඛන” කිරීමේදී හොඳ, පිරිසිදු කේතයක් ලිවීමට හොඳ කුමන ආකාරයේ ප්‍රවේශයන්ද?

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

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

වඩාත් නිශ්චිත තොරතුරු සැපයීමට මම සතුටු වෙමි, නමුත් වඩාත් සාමාන්‍ය උපදෙස්, වඩාත් ප්‍රයෝජනවත් යැයි මම සිතමි. මම පයිතන් 3 හි වැඩසටහන් කරමින් සිටිමි.


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

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


යාවත්කාලීන කරන්න

මම හිතුවා මම "සතියකට පසුව නොවන" යාවත්කාලීනයක් එකතු කරන්නම් කියලා. ඔබගේ සියලු උපදෙස් අතිශයින්ම ප්‍රයෝජනවත් විය. මම දැන් භාවිතා කරන්නේ අනුවාද පාලනය - git, චිත්‍රක අතුරුමුහුණතක් සඳහා git kraken සමඟ ය. එය භාවිතා කිරීම ඉතා පහසු වන අතර මගේ ලිපිගොනු දැඩි ලෙස පිරිසිදු කර ඇත - පැරණි ලිපිගොනු වටා රැඳී සිටීම අවශ්‍ය නොවේ, නැතහොත් පැරණි කේත අනුවාදයන් “එකවරම” යනුවෙන් අදහස් දක්වයි.

මම ද පයිලින්ට් ස්ථාපනය කර මගේ සියලු කේත මත ධාවනය කළෙමි. එක් ගොනුවකට මුලින් negative ණාත්මක අගයක් ලැබුණි; එය කෙසේ විය හැකිදැයි මට විශ්වාස නැත. මගේ ප්‍රධාන ගොනුව ~ 1.83 / 10 ක අගයකින් ආරම්භ වූ අතර දැන් එය ~ 9.1 / 10 වේ. සියලුම කේත දැන් ප්‍රමිතීන්ට අනුකූල වේ. ගොස් ඇති විචල්‍ය නම් යාවත්කාලීන කරමින් මම මගේ දෑසින් එය පසුකර ගියෙමි ... අහ් ... භයානකයි, සහ ප්‍රතික්‍රියාකාරකයට කොටස් සොයමින්.

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

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

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

ඉතින් ... මම හිතන්නේ මේ සියල්ල කියන්නට ඇත්තේ: ස්තූතියි .




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

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

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

Answers:


164

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

එබැවින් ඔබගේ ස්ක්‍රිප්ට් අවුල් සහගතය. මම සාමාන්‍ය බුද්ධියට පටහැනිව කියන්නම්, ඔබ තනිවම වැඩසටහන් කරනවා යැයි උපකල්පනය කරමින්, මෙය එතරම් නරක නැත! ඔබ නැවත කිසි දිනෙක ලියන බොහෝ දේ ස්පර්ශ කිරීමට යන්නේ නැත, එබැවින් "අගය" නිපදවීම වෙනුවට ලස්සන කේත ලිවීමට වැඩි කාලයක් ගත කිරීම (එබැවින් ඔබේ පිටපතෙහි ප්‍රති result ලය) ඔබට බොහෝ දේ නොකරනු ඇත.

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

ඔබේ ප්‍රධාන ගැටළුව කියවීමේ හැකියාවයි, එබැවින් වැඩි දියුණු කිරීම සඳහා උපදෙස් කිහිපයක් මෙන්න:

විචල්ය නම්:

සංක්ෂිප්ත අංක භාවිතා කිරීමට විද්‍යා ists යින් කැමතියි. සියලුම ගණිතමය සමීකරණ සාමාන්‍යයෙන් තනි අක්ෂර විචල්‍යයන් ලෙස භාවිතා කරන අතර ඔබේ කේතයේ කැබලි අක්ෂර හා ඉතා කෙටි විචල්‍යයන් දැකීමෙන් මා පුදුම නොවනු ඇත. මෙය කියවීමේ හැකියාව බෙහෙවින් රිදවයි. ඔබ ඔබේ කේතයට ආපසු යන විට, එම y, i සහ x2 නියෝජනය කරන්නේ කුමක්දැයි ඔබට මතක නැත, ඔබ එය සොයා ගැනීමට බොහෝ කාලයක් ගත කරනු ඇත. ඒ වෙනුවට ඔබේ විචල්‍යයන් පැහැදිලිව නම් කිරීමට උත්සාහ කරන්න.

ඔබගේ කේතය කාර්යයන් වලට බෙදන්න:

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

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

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

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

ගෝලීය විචල්යයන්:

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

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

අනුවාද පාලනය

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

මේ සියල්ල මතකයේ තබා ගැනීමෙන් ඔබට පැහැදිලි හා effective ලදායී කේතයක් ලිවීමට ඉඩ සැලසෙන අතර, දැවැන්ත කාර්යයන් සහ අවුල් සහගත විචල්‍යයන් හරහා ගමන් කිරීමට ඔබට සිදු නොවන බැවින් හැකි ඉක්මනින් වැරදි සොයා ගැනීමටද ඔබට උපකාරී වනු ඇත.


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

22
කේතය සුප්රසිද්ධ සූත්රයක් ක්රියාත්මක කිරීමක් නම්, තනි අකුරු විචල්ය නම් සහ එවැනි දේ කිරීම නිවැරදි දෙය විය හැකිය. ප්‍රේක්ෂකයා මත රඳා පවතී ... සහ තවත් බොහෝ දේ නම්, පා the කයා දැනටමත් නම්වල තේරුම දැන ගනු ඇතැයි අපේක්ෂා කරන්නේද යන්නයි.
cHao

11
HcHao ගැටළුව වන්නේ එම විචල්‍යයන් සූත්‍රයට ඇතුළත් කර ඇති විට නොවේ (එබැවින් “ශ්‍රිතය තුළ ඒවා නැවත නම් කරන්න” උපදෙස්), නමුත් ඒවා කියවා එයින් පිටත හැසිරවීමේදී සහ ඒවා වෙනත් විචල්‍යයන් සමඟ ගැටීමට පටන් ගන්නා විට (උදාහරණයක් ලෙස, "x" විචල්‍යයන් තුනක් අවශ්‍ය පුද්ගලයින් x1, x2, x3 ලෙස නම් කර ඇති බව මම දැක ඇත්තෙමි)
BgrWorker

5
"මම සාමාන්‍ය බුද්ධියට විරුද්ධයි ..." නෑ ඔයා නෑ. ඔබ යන්නේ සාමාන්‍ය බුද්ධියට පටහැනි පවත්නා ප්‍රවාදයට එරෙහිව ය. ;) මේ සියල්ලම පරිපූර්ණ උපදෙස් වේ.
jpmc26

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

141

මෙහි භෞතික විද්‍යා ist යා. එතන හිටියා.

ඔබේ ගැටළුව මෙවලම් තෝරා ගැනීම හෝ ක්‍රමලේඛන පරාමිතීන් (ඒකක පරීක්ෂණ, ඕඕපී, කුමක් වුවත්) ගැන නොවන බව මම තර්ක කරමි . එය ආකල්පය , මානසිකත්වය ගැන ය. ඔබේ විචල්‍ය නම් මුලින් ම තෝරාගෙන ඇති අතර එය කපටිකමක් බවට පත්වීම ප්‍රමාණවත් බව හෙළි කරයි. ඔබේ කේතය “එක් වරක් ධාවනය කරන්න, පසුව විසි කරන්න” යැයි ඔබ සිතන්නේ නම්, එය අනිවාර්යයෙන්ම අවුල් ජාලයක් වනු ඇත. ඔබ එය ශිල්පයේ හා ප්‍රේමයේ නිෂ්පාදනයක් ලෙස සිතන්නේ නම් එය සුන්දර වනු ඇත.

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

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

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

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

ඇත්ත වශයෙන්ම, මේ සියල්ලම පිරිවැය යටතේ පැමිණේ. පිරිසිදු කේතය ලිවීම ගනී ගොඩක් throwaway කේතය ලිවීම වඩා වැඩි කාලයක්. ඔබේ විශේෂිත භාවිත නඩුවේ පිරිවැය පිරිවැයට වඩා වැඩි ද යන්න තක්සේරු කළ හැක්කේ ඔබට පමණි.

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


32
Clean පිරිසිදු කේත ලිවීම හරියටම [පැහැදිලි ලිපියක් ලිවීමට සමාන වේ]. » මම එය සම්පූර්ණයෙන්ම අනුමත කරමි.
juandesant

43
මෙය බොහෝ වෘත්තීය ක්‍රමලේඛකයන්ට කීමට අමතක වන දෙයක් බැවින් එය එතරම් පැහැදිලිව පෙනේ. ඔබේ කේතය වෙනත් ක්‍රමලේඛකයෙකුට කියවිය හැකි සහ වෙනස් කළ හැකි විට අවසන් වේ. එය ක්‍රියාත්මක වී නිවැරදි ප්‍රතිදානය නිපදවන විට නොවේ. OP ට ඔහුගේ කේතය මානව කියවිය හැකි වන පරිදි ප්‍රතිනිර්මාණය කිරීම හා අදහස් දැක්වීම සඳහා අමතර පැයක් ගත කළ යුතුය.
UEFI

31
පිරිසිදු කේතය ලිවීම throwaway කේතය ලිවීම වඩා ගොඩක් වැඩි කාලයක් ගත කරන්නේ වුවද, වඩා වැදගත් බව ය කියවීම throwaway කේතය පිරිසිදු කේතය කියවීම වඩා ගොඩක් වැඩි කාලයක් ගත වෙනවා.
user949300

3
@UEFI නැත, එය බොහෝ වෘත්තීය ක්‍රමලේඛකයින් පවා නොදැන සිටින දෙයකි. නැත්නම් ඒ ගැන තැකීමක් නොකරන්න.
jpmc26

2
100% එකඟ වන්න. සංඛ්‍යාලේඛන ian යා ක්‍රමලේඛකයෙකු බවට පත් වූ නිසා මම වැඩ කරන විට 'විද්‍යාත්මක' ක්‍රමලේඛන ප්‍රමාණයක් කරමි. 1, 4, හෝ මාස 12 කට පසු ඔබට නැවත එම කේතයට යාමට සිදු වූ විට අර්ථවත් අදහස් සහිත පැහැදිලි කේතය ජීවිතාරක්ෂකයෙකි. කේතය කියවීමෙන් කේතය කරන්නේ කුමක්දැයි ඔබට කියනු ඇත. අදහස් කියවීමෙන් කියවෙන්නේ කේතය කුමක් කළ යුතුද යන්නයි.
railsdog

81

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

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

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

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


78
මම මගේ බොහෝ කේතයන් ආගමික වශයෙන් පරීක්‍ෂා කරමි, නමුත් ඒකක පරීක්ෂණ ගවේෂණාත්මක, විද්‍යාත්මක කේත නිෂ් less ල බවට වඩා අඩු බව මට පෙනී ගියේය. ක්‍රමවේදය මූලික වශයෙන් මෙහි ක්‍රියාත්මක වන බවක් නොපෙනේ. ඔවුන්ගේ විශ්ලේෂණ කේතය ඒකක පරීක්‍ෂා කරන මගේ ක්ෂේත්‍රයේ සිටින පරිගණක විද්‍යා scient යෙකු මම නොදනිමි. මෙම නොගැලපීමට හේතුව කුමක්දැයි මට විශ්වාස නැත, නමුත් එක් හේතුවක් නිසැකවම, සුළු ඒකක හැර, හොඳ පරීක්ෂණ අවස්ථා පිහිටුවීම දුෂ්කර හෝ කළ නොහැකි ය.
කොන්රාඩ් රුඩොල්ෆ්

22
On කොන්රාඩ් රුඩොල්ෆ් එම උපක්‍රමය ඔබේ කේතයේ කොටස් අතර අව්‍යාජ ගවේෂණාත්මක හෝ උදා. සමහර මිනිසුන්ට කියවිය හැකි ප්‍රතිදානය හෝ දෘශ්‍යකරණය. මෙහි ඇති ගැටළුව විය හැක්කේ, සැලකිලිමත් නොවීම වෙන් කිරීම එම රේඛා බොඳ කිරීමට හේතු වන අතර, මෙම සන්දර්භය තුළ ඒකක පරීක්ෂාව කළ නොහැකි ය යන මතයට තුඩු දෙන අතර එය පුනරාවර්තන චක්‍රයක ආරම්භයට ඔබව ගෙන යයි.
කුහුඹු පී

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

12
NtAntP මනාව නිර්වචනය කළ හැකි පරීක්ෂණ ඒකකවලට අර්ථවත් ලෙස ප්‍රතිනිර්මාණය කළ හැකි තරම් කේතයක් නොතිබිය හැකිය. විද්‍යාත්මක කේත රාශියක් අත්‍යවශ්‍යයෙන්ම පුස්තකාල පොකුරක් එකට තට්ටු කරයි. මෙම පුස්තකාල දැනටමත් හොඳින් පරීක්‍ෂා කර පිරිසිදු ලෙස ව්‍යුහගත කර ඇති අතර එයින් අදහස් කරන්නේ කතුවරයාට ලිවිය යුත්තේ “මැලියම්” පමණක් වන අතර මගේ අත්දැකීම් අනුව, මැලියම් සඳහා ඒකක පරීක්ෂණ ලිවීමට නොහැකි තරම් ආසන්නයි.
ජේම්ස්_පික්

7
"ඔබ යන විට අනුවාද පාලනය සහ ලිවීමේ ඒකක පරීක්ෂණ අතර, ඔබේ කේතය ස්වභාවිකවම වඩා පිරිසිදු වනු ඇත." මෙය සත්‍ය නොවේ . මට එය පෞද්ගලිකව සහතික කළ හැකිය. මෙම මෙවලම් දෙකම කපටි කේත ලිවීමෙන් ඔබව වළක්වන අතර, විශේෂයෙන්, කපටි කේතයට ඉහළින් කපටි පරීක්ෂණ ලිවීමෙන් පිරිසිදු කිරීම වඩාත් අපහසු වේ. පරීක්ෂණ යනු මැජික් රිදී උණ්ඩයක් නොවන අතර, ඒවා මෙන් කතා කිරීම තවමත් ඉගෙන ගන්නා ඕනෑම සංවර්ධකයෙකුට කළ යුතු භයානක දෙයකි (එය සියල්ලන්ම වේ). අනුවාද පාලනය සාමාන්‍යයෙන් කිසි විටෙකත් කේතයට හානි නොකරයි.
jpmc26

29

(අනුවාද පාලනය භාවිතා කිරීම පසෙක තබා, සෑම නව ක්‍රියාවක් සඳහාම නව ගොනුවක් සෑදීම සහ ඒ සියල්ල කොහේ හෝ පෙළ ගොනුවක පටිගත කිරීම, එමඟින් තත්වය නාටකාකාර ලෙස උපකාරී වනු ඇත)

ඔබ මෙය බොහෝ විට ඔබ විසින්ම හදුනාගනු ඇත, නමුත් ඔබට “මේ සියල්ල කොහේ හෝ පෙළ ගොනුවක පටිගත කිරීමට” සිදුවුවහොත් ඔබ අනුවාද පාලන පද්ධතිය එහි පූර්ණ විභවතාවයට භාවිතා නොකරයි. Subversion, git, හෝ Mercurial වැනි දෙයක් භාවිතා කර සෑම කැපවීමක් සමඟම හොඳ කැපවීමේ පණිවිඩයක් ලියන්න. ඔබට පෙළ ගොනුවේ අරමුණ ඉටු කරන ලොගයක් ඇති නමුත් ගබඩාවෙන් වෙන් කළ නොහැක.

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

කුඩා කේත කැබලි ලිවීම සඳහා ඒකක පරීක්ෂණ අවශ්‍යද? OOP ගැන කුමක් කිව හැකිද? විශාල ව්‍යාපෘතිවල වැඩ කිරීමට වඩා “විද්‍යාත්මක ක්‍රමලේඛන” කිරීමේදී හොඳ, පිරිසිදු කේතයක් ලිවීමට හොඳ කුමන ආකාරයේ ප්‍රවේශයන්ද?

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

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


4
පණිවිඩ යැවීම සඳහා +1; ඒවා යල් පැන යා නොහැකි අදහස් හා සමාන වන අතර ඒවා ඇත්ත වශයෙන්ම අදාළ වන විට කේතයේ අනුවාදයට බැඳී ඇත. ඔබගේ පැරණි කේතය අවබෝධ කර ගැනීම සඳහා, යල්පැනගිය අදහස් කියවීමට වඩා ව්‍යාපෘතියේ ඉතිහාසය (සාධාරණ කැටි ගැසීමක් අනුව සිදු කර ඇත්නම්) බැලීම පහසුය.
මෝඩ ෆ්‍රීක්

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

2
cmcottle, මම පෞද්ගලිකව git වලට කැමතියි, නමුත් වෙනස්කම් පිළිබඳ විස්තර සොයා බැලීමට මෙය සුදුසුම ස්ථානය යැයි මම නොසිතුවෙමි, විශේෂයෙන් තේරීම ක්‍රියාකාරී ආගමික යුද්ධවලින් එකකි. ප්‍රදේශයෙන් ඔවුන් බිය ගැන්වීමට වඩා යමක් භාවිතා කිරීමට OP දිරිමත් කිරීම වඩා හොඳය , සහ තීරණය කිසිසේත් ස්ථිර නොවේ.
පීටර් ටේලර්

21

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

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

තවත් උදාහරණයක් ලෙස, භෞතික විද්‍යා පර්යේෂණ සහ ඉංජිනේරු විද්‍යාව සඳහා භාවිතා කරන භෞතික විද්‍යා සමාකරණ මෙවලමක් වන සිම්බෝඩි හි විශිෂ්ට කේත කිහිපයක් තිබේ. මෙම ස්නිපටවල ගණනය කිරීමක් සඳහා සමීකරණයක් භාවිතා කරන බව දැක්වෙන විවරණයක් ඇත, ඉන්පසු කේතය හැකි තරම් ක්‍රියාත්මක වන සමීකරණවලට සමීපව කියවයි.

ContactGeometry.cpp:

// t = (-b +/- sqrt(b^2-4ac)) / 2a
// Discriminant must be nonnegative for real surfaces
// but could be slightly negative due to numerical noise.
Real sqrtd = std::sqrt(std::max(B*B - 4*A*C, Real(0)));
Vec2 t = Vec2(sqrtd - B, -sqrtd - B) / (2*A);

ContactGeometry_Sphere.cpp:

// Solve the scalar Jacobi equation
//
//        j''(s) + K(s)*j(s) = 0 ,                                     (1)
//
// where K is the Gaussian curvature and (.)' := d(.)/ds denotes differentiation
// with respect to the arc length s. Then, j is the directional sensitivity and
// we obtain the corresponding variational vector field by multiplying b*j. For
// a sphere, K = R^(-2) and the solution of equation (1) becomes
//
//        j  = R * sin(1/R * s)                                        (2)
//          j' =     cos(1/R * s) ,                                      (3)
//
// where equation (2) is the standard solution of a non-damped oscillator. Its
// period is 2*pi*R and its amplitude is R.

// Forward directional sensitivity from P to Q
Vec2 jPQ(R*sin(k * s), cos(k * s));
geod.addDirectionalSensitivityPtoQ(jPQ);

// Backwards directional sensitivity from Q to P
Vec2 jQP(R*sin(k * (L-s)), cos(k * (L-s)));
geod.addDirectionalSensitivityQtoP(jQP);

9
“ප්‍රකාශිත සමීකරණ හැකිතාක් කියවීමට කේතය” සෑදීම සඳහා ප්ලස් වන්. කණගාටුයි, දිගු, අර්ථවත් විචල්‍ය නම් වෙනුවෙන් පෙනී සිටින්නන්. විද්‍යාත්මක කේත සංග්‍රහයේ වඩාත්ම අර්ථවත් නම් නපුරු, කෙටි හා තිරිසන් ය. මන්දයත් එය විද්‍යාත්මක සඟරා පත්‍රයක භාවිතා කළ සම්මුතියයි. ජර්නල් කඩදාසියක ඇති සමීකරණ ක්‍රියාත්මක කරන සමීකරණ-බර කේතයක් සඳහා, කඩදාසි නාමකරණයට හැකි තරම් සමීපව සිටීම වඩාත් සුදුසුය. මෙය හොඳ කේතීකරණ ප්‍රමිතීන්ට පටහැනි නම්, දැඩි ය.
ඩේවිඩ් හැමන්

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

1
Av ඩේවිඩ් හැමන් හැරුණු විට, මූලාශ්‍ර ලිපිගොනු වල යූටීඑෆ් -8 සඳහා පයිතන් සහාය සහ විචල්‍ය නම් සඳහා සරල නීති රීති ප්‍රකාශ කිරීම පහසු කරයි λහෝ φකැත lambda_හෝ ඒ වෙනුවට phy...
301_Moved_Permanently

1
@tonysdg ඔබට දැනටමත් යොමු කිරීමක් ඇත; එය "හැමන්, සහ වෙනත් (2018)" (හෝ ඕනෑම දෙයක්) ලෙස හැඳින්වේ. එය විචල්‍යයන්ගේ අර්ථයන් මෙතෙක් විස්තර කළ හැකි ඕනෑම විවරයකට වඩා විස්තරාත්මකව විස්තර කරයි. විචල්‍ය නම් කඩදාසි වල අංකනයට ආසන්නව තබා ගැනීමට හේතුව හරියටම කඩදාසි වල ඇති දේ කේතයේ ඇති දේ සමඟ සම්බන්ධ කිරීම පහසු කිරීමයි.
කිසිවෙකු

17

ඉතින්, මගේ දින රැකියාව කැලිෆෝනියා විශ්ව විද්‍යාල පද්ධතිය සඳහා පර්යේෂණ දත්ත ප්‍රකාශනය හා සංරක්ෂණයයි. පුද්ගලයන් කිහිප දෙනෙකු ප්‍රජනන හැකියාව ගැන සඳහන් කර ඇති අතර, එය ඇත්ත වශයෙන්ම මෙහි ඇති ප්‍රධාන ගැටළුව යැයි මම සිතමි: ඔබේ අත්හදා බැලීම ප්‍රතිනිෂ්පාදනය කිරීමට වෙනත් කෙනෙකුට අවශ්‍ය ඕනෑම දෙයක් ලේඛනගත කරන ආකාරයට ඔබේ කේතය ලේඛනගත කිරීම සහ වෙනත් කෙනෙකුට එය සරල කිරීමට කේතය ලිවීම. ඔබේ අත්හදා බැලීම ප්‍රතිනිෂ්පාදනය කිරීමට සහ වැරදි ප්‍රභවයන් සඳහා ඔබේ ප්‍රති results ල පරීක්ෂා කිරීමට.

නමුත් මා සඳහන් කර නැති දෙයක්, වැදගත් යැයි මා සිතන පරිදි, අරමුදල් සපයන ආයතන වැඩි වැඩියෙන් දත්ත ප්‍රකාශනයේ කොටසක් ලෙස මෘදුකාංග ප්‍රකාශනය දෙස බලමින් සිටින අතර මෘදුකාංග ප්‍රකාශනය විවෘත විද්‍යාව සඳහා අවශ්‍යතාවයක් බවට පත් කරයි.

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

මෙම අරමුණු සඳහා විද්‍යා ists යින් සාමාන්‍යයෙන් තමන්ගේම මෘදුකාංගයක් සංවර්ධනය කරති. එසේ කිරීමට සැලකිය යුතු වසම්-විශේෂිත දැනුමක් අවශ්‍ය වේ. එහි ප්‍රති As ලයක් ලෙස විද්‍යා scientists යන් සාමාන්‍යයෙන් මෘදුකාංග සංවර්ධනය කිරීම සඳහා 30% ක් හෝ ඊට වැඩි කාලයක් වැය කරන බව මෑත අධ්‍යයනයන්ගෙන් හෙළි වී තිබේ. කෙසේ වෙතත්, ඔවුන්ගෙන් 90% ක් හෝ ඊට වැඩි ප්‍රමාණයක් මූලික වශයෙන් ස්වයං-ඉගැන්වූ අය වන අතර, එබැවින් නඩත්තු කළ හැකි කේත ලිවීම, අනුවාද පාලනය භාවිතා කිරීම සහ ට්‍රැකර් නිකුත් කිරීම, කේත සමාලෝචන, ඒකක පරීක්ෂාව සහ කාර්ය ස්වයංක්‍රීයකරණය වැනි මූලික මෘදුකාංග සංවර්ධන භාවිතයන්ට නිරාවරණය නොවීම.

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

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

ඔවුන් නිර්දේශ කරන පිළිවෙත් පිළිබඳ ඉහළ මට්ටමේ දළ සටහනක්:

  1. පරිගණක සඳහා නොව මිනිසුන් සඳහා වැඩසටහන් ලියන්න
  2. පරිගණකයට වැඩ කිරීමට ඉඩ දෙන්න
  3. වර්ධක වෙනස්කම් කරන්න
  4. ඔබම (හෝ වෙනත් අය) නැවත නොකරන්න
  5. වැරදි සඳහා සැලසුම් කරන්න
  6. මෘදුකාංගය ප්‍රශස්ත කරන්න එය නිවැරදිව ක්‍රියා කිරීමෙන් පසුව පමණි
  7. ලේඛන සැලසුම් කිරීම සහ අරමුණ මිස යාන්ත්‍ර විද්‍යාව නොවේ
  8. සහයෝගයෙන් වැඩ කරන්න

මෙම එක් එක් කරුණු පිළිබඳව කඩදාසි සැලකිය යුතු ලෙස විස්තර කරයි.


16

සමහර සම්මත දේවල් කළ හැකි වූ විට, ලිවීමට වඩා වේගවත් විය හැකි අතර, වැඩසටහනේ කෙටි බව නිසා ඒ හා සමාන මට්ටමේ කියවීමේ මට්ටමක් තිබිය හැකි යැයි සිතන විට කේත ලිවීම ඇත්තෙන්ම තේරුමක් තිබේද?

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

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

  • පරිමාණය: ස්ක්‍රිප්ට් එක තනිවම පවතින්නේද, නැතහොත් එය අවසානයේදී විශාල වැඩසටහනක භාවිතා වේද? එසේ නම්, විශාල වැඩසටහන් OOP භාවිතා කරනවාද? ඔබගේ ස්ක්‍රිප්ටයේ කේතය විශාල වැඩසටහනට පහසුවෙන් ඒකාබද්ධ කළ හැකිද?
  • මොඩියුලරිටි: පොදුවේ, ඔබේ කේතය මොඩියුලර් විය යුතුය. කෙසේ වෙතත්, OOP කේතය කැබලිවලට ඉතා සුවිශේෂී ආකාරයකින් බිඳ දමයි. එම ආකාරයේ මොඩියුලරිටි (එනම් ඔබේ ස්ක්‍රිප්ට් පන්තිවලට කැඩීම) ඔබ කරන දෙයට තේරුමක් තිබේද?

මෙම කුඩා වේගවත් ව්‍යාපෘති සඳහා "ආරම්භ කිරීම" සහ පිරිසිදු ලෙස වැඩසටහන් කරන්නේ කෙසේදැයි දැන ගැනීමට මට අවශ්‍යය.

# 1: එහි ඇති දේ ගැන හුරු වන්න:
ඔබ “හුදෙක්” ස්ක්‍රිප්ටින් වුවද (ඔබ ඇත්ත වශයෙන්ම විද්‍යා අංගය ගැන සැලකිලිමත් වේ), විවිධ ක්‍රමලේඛන සංකල්ප සහ උපමා ගැන ඉගෙන ගැනීමට ඔබට යම් කාලයක් ගත විය යුතුය. එමගින්, ඔබ භාවිතා කිරීමට අකමැති / නොකළ යුතු දේ සහ කවදාද යන්න පිළිබඳ වඩා හොඳ අදහසක් ඔබට තිබිය හැකිය. ඒක ටිකක් භයානකයි වගේ. "මම ආරම්භ කරන්නේ කොතැනින්ද / මා බැලීමට පටන් ගන්නේ කුමක් ද?" යන ප්‍රශ්නය ඔබට තවමත් තිබිය හැකිය. ඊළඟ වෙඩි උණ්ඩ දෙකෙන් හොඳ ආරම්භක ස්ථානයක් පැහැදිලි කිරීමට මම උත්සාහ කරමි.

# 2: ඔබ වැරදියි කියා දන්නා දේ නිවැරදි කිරීම ආරම්භ කරන්න:
පුද්ගලිකව, මම වැරදි යැයි දන්නා දේ සමඟ ආරම්භ කරමි. අනුවාද පාලනයක් ලබාගෙන එම විචල්‍ය නම් සමඟ වඩා හොඳ වීමට විනය හැසිරවීමට පටන් ගන්න (එය බරපතල අරගලයකි). ඔබ දන්නා දේ වැරදියි කියා පැහැදිලිව පෙනේ. කෙසේ වෙතත්, මගේ අත්දැකීම් අනුව, එක් දෙයක් නිවැරදි කිරීමෙන් මා වෙනත් දෙයකට යොමු වන බව මට පෙනී ගොස් ඇත. මම එය දැන ගැනීමට පෙර, මම වැරදි කරන විවිධ දේවල් 10 ක් එළිදක්වා ඒවා නිවැරදි කරන්නේ කෙසේද යන්න හෝ ඒවා පිරිසිදු ආකාරයකින් ක්‍රියාත්මක කරන්නේ කෙසේදැයි සොයා බැලුවෙමි.

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

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

එය උපකාරී වේ යැයි මම බලාපොරොත්තු වෙමි!


පැති සටහන: මම දන්නවා ඔබ උදාහරණයක් ලෙස OOP භාවිතා කළ බව. OOP භාවිතා කරමින් ලිවීමේ කේත හැසිරවිය යුතු ආකාරය ගැන මම හිර වී ඇතැයි ඔබ සිතනවාට මම කැමති නොවෙමි. එම උදාහරණය සමඟ දිගටම පිළිතුරක් ලිවීම පහසු විය.


මම හිතන්නේ # 3 වඩාත්ම වැදගත් කාරණය - පළපුරුදු ක්‍රමලේඛකයෙකුට OP ට අවශ්‍ය සංකල්ප (# 1), ස්ක්‍රිප්ට් වඩා හොඳ ආකාරයකින් සංවිධානය කරන්නේ කෙසේද සහ අනුවාද පාලනය (# 2) භාවිතා කරන්නේ කෙසේද යන්න පැවසිය හැකිය.
ඩොක් බ්‍රවුන්

16

යුනික්ස් මූලධර්මයට ඇලී සිටීමට මම නිර්දේශ කරමි: එය සරලව තබා ගන්න, මෝඩය! (හාදුවක්)

නැතහොත්, වෙනත් ක්‍රමයක් තබන්න: වරකට එක දෙයක් කර එය හොඳින් කරන්න.

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

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

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

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

සාරාංශය
මා වරක් පේළි 500 ක පමණ ක්‍රියාකාරීත්වයකින් යුත් කේත නැවත ප්‍රතිනිර්මාණය කිරීමේ කේතයක් ගත කළෙමි. මා කළ පසු, මුළු කේතය පේළි දහසක් පමණ කෙටි විය; කේත රේඛා අනුව මම negative ණාත්මක ප්‍රතිදානයක් නිපදවා ඇත්තෙමි. මම සමාගමට ණයගැතියි ( http://www.geekherocomic.com/2008/10/09/programmers-salary-policy/index.html ). තවමත්, මෙය මා මෙතෙක් කළ වටිනාම කෘතියක් බව මම තරයේ විශ්වාස කරමි ...

සමහර කාර්යයන් එකින් එක එකිනෙකට වෙනස් දේවල් කරන නිසා ඒවා දිගු විය හැකිය. මේවා DRY උල්ලං are නය කිරීම් නොවේ, නමුත් ඒවා ද බෙදිය හැකිය. ප්‍රති result ලය බොහෝ විට ඉහළ මට්ටමේ ශ්‍රිතයක් වන අතර එය මුල් ශ්‍රිතයන්ගේ තනි පියවර ක්‍රියාත්මක කරන අතලොස්සක් ශ්‍රිතයන් කැඳවයි. මෙය සාමාන්‍යයෙන් කේත ප්‍රමාණය වැඩි කරනු ඇත, නමුත් එකතු කළ ශ්‍රිත නාමයන් කේතය වඩාත් කියවිය හැකි අයුරින් ක්‍රියා කරයි. මන්ද දැන් ඔබට එහි සියලු පියවරයන් පැහැදිලිවම නම් කර ඇති ඉහළ මට්ටමේ ශ්‍රිතයක් ඇත. එසේම, මෙම භේදයෙන් පසුව පැහැදිලි වන්නේ, කුමන පියවර ක්‍රියාත්මක වන්නේ කුමන දත්ත මතද යන්නයි. (ක්‍රියාකාරී තර්ක. ඔබ ගෝලීය විචල්‍යයන් භාවිතා නොකරයි නේද?)

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

KISS සහ DRY මූලධර්ම ඔබට බොහෝ දුරක් යා හැකිය. ඔබට වහාම OOP යනාදිය සමඟ ආරම්භ කිරීම අවශ්‍ය නොවේ, බොහෝ විට ඔබට මේ දෙක යෙදීමෙන් විශාල සරල කිරීම් ලබා ගත හැකිය. කෙසේ වෙතත්, OOP සහ වෙනත් උපමා ගැන දැන ගැනීම දිගු කාලීනව ගෙවනු ඇත, මන්ද ඒවා ඔබේ වැඩසටහන් කේතය වඩාත් පැහැදිලි කිරීමට ඔබට භාවිතා කළ හැකි අතිරේක මෙවලම් ලබා දෙන බැවිනි.

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


2
දිගු ක්‍රම බෙදීම පිළිබඳ විශිෂ්ට කරුණු. කථාවෙන් පසු පළමු ඡේදය පිළිබඳ තවත් හොඳ ur ෂධයක්: ඔබේ ක්‍රමය තාර්කිකව කොටස් වලට බෙදිය හැකි නම් සහ එක් එක් කොටස කරන්නේ කුමක්ද යන්න පැහැදිලි කරමින් අදහසක් ලිවීමට ඔබ පෙළඹෙන්නේ නම්, එය අදහස් දැක්වීමේදී බිඳ දැමිය යුතුය. ශුභාරංචිය, එම අදහස් මඟින් නව ක්‍රම ලෙස හැඳින්විය යුතු දේ පිළිබඳ හොඳ අදහසක් ලබා දෙනු ඇත.
ජැකෙස්

A ජාකේස් අහ්, ඒ ගැන මුළුමනින්ම අමතක වී ඇත. මට මතක් කිරීම ගැන ස්තූතියි. මෙය ඇතුළත් කිරීම සඳහා මම මගේ පිළිතුර යාවත්කාලීන කර ඇත :-)
cmaster - මොනිකා

1
නියම කරුණු, "ඩ්‍රයි" යනු වඩාත්ම වැදගත් තනි සාධකය යැයි කීමට මෙය සරල කිරීමට මම කැමතියි. “පුනරාවර්තන” හදුනා ගැනීම සහ ඒවා ඉවත් කිරීම අනෙක් සියලුම ක්‍රමලේඛන ඉදිකිරීම්වල මූලික ගල වේ. වෙනත් ආකාරයකින් කිවහොත්, සියලුම ක්‍රමලේඛන ඉදිකිරීම් අවම වශයෙන් අර්ධ වශයෙන් ඔබට ඩ්‍රයි කේතයක් නිර්මාණය කිරීමට උපකාරී වේ. "කිසි විටෙකත් අනුපිටපතක් නැත" යැයි කියමින් ආරම්භ කර එය හඳුනාගෙන ඉවත් කිරීමට පුරුදු වන්න. අනුපිටපතක් කුමක් විය හැකිද යන්න පිළිබඳව ඉතා විවෘතව සිටින්න - එය සමාන කේතයක් නොවුනත් එය අනුපිටපත් කිරීමේ ක්‍රියාකාරිත්වය විය හැකිය ...
බිල් කේ

11

අනුවාද පාලනය මඟින් ඔබගේ බොහෝ ගැටලු වහාම විසඳනු ඇති බවට මම අනෙක් අය සමඟ එකඟ වෙමි. විශේෂයෙන්:

  • අනුවාද පාලනය ගැන සැලකිලිමත් වන බැවින් සිදු කර ඇති වෙනස්කම් හෝ ගොනුවක පිටපත් රාශියක් තිබීම වැනි ලැයිස්තුවක් පවත්වා ගැනීමට අවශ්‍ය නොවේ.
  • නැවත ලිවීම යනාදිය නිසා තවත් ලිපිගොනු නැති වී ඇත. (ඔබ මූලික කරුණු වලට ඇලී සිටින තාක් කල්; උදා: "ඉතිහාසය නැවත ලිවීමෙන් වළකින්න)
  • යල්පැනගිය අදහස් දැක්වීම්, මළ කේත ආදිය අවශ්‍ය නොවේ. අනුවාද පාලනයට ඔවුන් කැප වූ පසු, ඒවා නිරුවත් කිරීමට නිදහස් වන්න. මෙය ඉතා නිදහස් බවක් දැනිය හැකිය!

මම කියන්නේ එය අධිතක්සේරු නොකරන්න: git භාවිතා කරන්න. සරල විධානයන්ට masterඇලී සිටින්න (උදා: තනි ශාඛාවක් පමණි), සමහර විට GUI එකක් භාවිතා කරන්න, එවිට ඔබ හොඳින් විය යුතුය. ප්‍රසාද දීමනාවක් ලෙස ඔබට නොමිලේ ප්‍රකාශනය සහ උපස්ථ සඳහා gitlab, github ආදිය භාවිතා කළ හැකිය;)

මම මෙම පිළිතුර ලිවීමට හේතුව, මා ඉහත සඳහන් කර නොතිබූ ඔබ උත්සාහ කළ හැකි කරුණු දෙකක් ඇමතීමයි. පළමුවැන්න නම් ඒකක පරීක්ෂණ සඳහා සැහැල්ලු විකල්පයක් ලෙස ප්‍රකාශ භාවිතා කිරීමයි . ඒකක පරීක්ෂණ මඟින් ශ්‍රිතය / මොඩියුලය / පරීක්ෂාවට ලක්වන ඕනෑම දෙයක් "පිටත" හිඳීමට නැඹුරු වේ: ඒවා සාමාන්‍යයෙන් යම් දත්තයක් ශ්‍රිතයකට යවයි, ප්‍රති result ලයක් ආපසු ලබා ගනී, ඉන්පසු එම ප්‍රති .ලයේ සමහර ගුණාංග පරීක්ෂා කරන්න. මෙය සාමාන්‍යයෙන් හොඳ අදහසකි, නමුත් හේතු කිහිපයක් නිසා අපහසුතාවයට පත්විය හැකිය (විශේෂයෙන් "ඉවතලන්න" කේතය සඳහා):

  • ඒකක පරීක්ෂණ මඟින් ඔවුන් ශ්‍රිතයට ලබා දෙන දත්ත තීරණය කළ යුතුය. එම දත්ත යථාර්ථවාදී විය යුතුය (එසේ නොමැතිනම් එය පරීක්ෂා කිරීම සඳහා එතරම් වැදගත්කමක් නැත), එයට නිවැරදි ආකෘතියක් තිබිය යුතුය.
  • ඒකක පරීක්ෂණ වලට ඔවුන් ප්‍රකාශ කිරීමට අවශ්‍ය දේවලට “ප්‍රවේශය” තිබිය යුතුය. විශේෂයෙන්, ඒකක පරීක්ෂණ මගින් ශ්‍රිතයක් තුළ ඇති අතරමැදි දත්ත කිසිවක් පරීක්ෂා කළ නොහැක; අපට එම ශ්‍රිතය කුඩා කැබලිවලට කැඩී, එම කැබලි පරීක්ෂා කර වෙනත් තැනකට සම්බන්ධ කළ යුතුය.
  • ඒකක පරීක්ෂණ ද වැඩසටහනට අදාළ යැයි උපකල්පනය කෙරේ. නිදසුනක් ලෙස, පරීක්ෂණ කට්ටල අවසන් වරට ධාවනය වූ දා සිට විශාල වෙනස්කම් සිදුවී ඇත්නම් ඒවා "පරණ" බවට පත්විය හැකි අතර, තවදුරටත් භාවිතා නොකරන කේත සඳහා පරීක්ෂණ පොකුරක් පවා තිබිය හැකිය.

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

  • ඒවා සාමාන්‍ය වැඩසටහන් ක්‍රියාත්මක කිරීමේ කොටසක් ලෙස ක්‍රියාත්මක වන හෙයින්, අපට සෙල්ලම් කිරීමට සැබෑ තාත්වික දත්ත තිබේ. මේ සඳහා වෙනම ගණනය කිරීමක් අවශ්‍ය නොවන අතර (අර්ථ දැක්වීම අනුව) යථාර්ථවාදී වන අතර නිවැරදි ආකෘතියක් ඇත.
  • කේතයේ ඕනෑම තැනක ප්‍රකාශයන් ලිවිය හැකිය, එබැවින් අපට පරීක්ෂා කිරීමට අවශ්‍ය දත්ත වෙත ප්‍රවේශය ඇති ඕනෑම තැනක ඒවා තැබිය හැකිය. ශ්‍රිතයක යම් අතරමැදි අගයක් පරික්ෂා කිරීමට අපට අවශ්‍ය නම්, අපට එම ශ්‍රිතයේ මැදට යම් ප්‍රකාශයක් කළ හැකිය!
  • ඒවා පේළියේ ලියා ඇති බැවින්, කේතයේ ව්‍යුහය සමඟ "සමමුහුර්තතාවයෙන්" ඉවත් වීමට නොහැකි ය. පෙරනිමියෙන් ප්‍රකාශයන් පරික්‍ෂා කර ඇති බවට අප සහතික කරන්නේ නම්, ඊළඟ වතාවේ අපි වැඩසටහන ක්‍රියාත්මක කරන විට ඒවා සමත් වේද නැද්ද යන්න වහාම අපට පෙනෙනු ඇති බැවින් ඒවා “පරණ” වීම ගැන කරදර විය යුතු නැත!

වේගය සාධකයක් ලෙස ඔබ සඳහන් කරයි, එම අවස්ථාවේ දී එම ලූපය තුළ ප්‍රකාශ කිරීම පරීක්ෂා කිරීම නුසුදුසු විය හැකිය (නමුත් සැකසුම පරීක්ෂා කිරීම හා පසුව සැකසීම සඳහා තවමත් ප්‍රයෝජනවත් වේ). කෙසේ වෙතත්, සෑම ප්‍රකාශයක්ම පාහේ ක්‍රියාත්මක කිරීම මඟින් ඒවා ක්‍රියා විරහිත කිරීමට ක්‍රමයක් සපයයි; උදාහරණයක් ලෙස පයිතන්හි දී -Oවිකල්පය සමඟ ධාවනය කිරීමෙන් ඒවා අක්‍රීය කළ හැකිය (මම මෙය දැන සිටියේ නැත, මක්නිසාද යත් මීට පෙර මගේ කිසිදු ප්‍රකාශයක් අක්‍රීය කිරීමේ අවශ්‍යතාවයක් මට නොතිබුණි). මම ඔබ ඔවුන් ඉවත් බව නිර්දේශ මතපෙරනිමියෙන්; ඔබේ කේතීකරණ / නිදොස්කරණය / පරීක්ෂණ චක්‍රය මන්දගාමී වුවහොත්, ඔබේ දත්තවල කුඩා උපකොටසක් සමඟ පරීක්‍ෂා කිරීම වඩා හොඳ විය හැකිය, නැතහොත් පරීක්‍ෂා කිරීමේදී හෝ යම් දෙයක් අනුකරණය කිරීමේ අඩු පුනරාවර්තන සිදු කිරීම. කාර්ය සාධන හේතූන් මත ඔබ පරීක්‍ෂා නොකිරීමේ ලකුණු අක්‍රීය කිරීම අවසන් කරන්නේ නම්, මම ඔබට නිර්දේශ කරන පළමු දෙය නම් ඒවා මන්දගාමී වීමේ ප්‍රභවයද යන්න මැනීමයි ! (කාර්ය සාධන බාධක සම්බන්ධයෙන් අපව රවටා ගැනීම ඉතා පහසුය)

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

නික්ස් වැනි පද්ධති මෑතකදී (ටිකක්) ජනප්‍රිය වෙමින් පවතින අතර සමහරු ඔබ විස්තර කරන ආකාරයට “ඉවතලන්න” කේතය සඳහා අධික ලෙස මරා දැමිය හැකි යැයි සිතිය හැකි නමුත් විද්‍යාත්මක පරිගණකවල ප්‍රජනන හැකියාව සඳහා ඔවුන් ලබා ඇති ප්‍රතිලාභ අතිමහත් ය. මෙවැනි අත්හදා බැලීමක් සඳහා ෂෙල් ස්ක්‍රිප්ට් එකක් සලකා බලන්න (උදා run.sh):

#!/usr/bin/env bash
set -e
make all
./analyse < ./dataset > output.csv

අපට ඒ වෙනුවට නික්ස් "ව්‍යුත්පන්නයක්" ලෙස නැවත ලිවිය හැකිය (උදා run.nix):

with import <nixpkgs> {};
runCommand "output.csv" {} ''
  cp -a ${./.} src
  cd src
  make all
  ./analyse < ./dataset > $out
''

අතර ඇති දේවල් ''...''බාෂ් කේතය වන අතර, එය පෙර අප සතුව තිබූ ආකාරයටම වේ, එය හැර ${...}වෙනත් නූල් වල අන්තර්ගතය “බෙදීමට” භාවිතා කළ හැකිය (මෙම අවස්ථාවේ දී ./., එය අඩංගු නාමාවලියෙහි මාවත දක්වා පුළුල් වේ run.nix). මෙම with import ...රේඛාව Nix ගේ ආනයනය පුස්තකාලයක් සපයන, runCommandbash කේතය ධාවනය සඳහා. අපට අපගේ අත්හදා බැලීම ක්‍රියාත්මක කළ හැකිය nix-build run.nix, එය වැනි මාර්ගයක් ලබා දෙනු ඇත /nix/store/1wv437qdjg6j171gjanj5fvg5kxc828p-output.csv.

ඉතින් මෙය අපව මිලදී ගන්නේ කුමක් ද? නික්ස් ස්වයංක්‍රීයව "පිරිසිදු" පරිසරයක් සැකසෙනු ඇත, එයට අප පැහැදිලිවම ඉල්ලා ඇති දේවලට පමණක් ප්‍රවේශය ඇත. විශේෂයෙන් එයට $HOMEඅප විසින් ස්ථාපනය කර ඇති පද්ධති මෘදුකාංග වැනි විචල්‍යයන් සඳහා ප්‍රවේශයක් නොමැත . මෙමඟින් අපගේ වර්තමාන යන්ත්‍රයේ තොරතුරු, අප ~/.configවිසින් ස්ථාපනය කර ඇති වැඩසටහන් වල අන්තර්ගතය හෝ සංස්කරණ වැනි තොරතුරු වලින් ස්වාධීන වේ ; අපගේ ප්‍රති results ල අනුකරණය කිරීමෙන් අනෙක් පුද්ගලයින් වළක්වන දේවල් AKA! මේ නිසා තමයි මම එය එකතු කළේcpවිධානය, පෙරනිමියෙන් ව්‍යාපෘතියට ප්‍රවේශ විය නොහැකි බැවින්. පද්ධතියේ සොෆ්ට්වෙයාර් නික්ස් ස්ක්‍රිප්ට් එකකට නොතිබීම කරදරයක් සේ පෙනේ, නමුත් එය අනෙක් පැත්තටද යයි: ස්ක්‍රිප්ට් එකක එය භාවිතා කිරීම සඳහා අපගේ පද්ධතියේ (නික්ස් හැර) කිසිවක් ස්ථාපනය කිරීමට අපට අවශ්‍ය නැත; අපි එය ඉල්ලන අතර නික්ස් ඉවත්ව ගොස් අවශ්‍ය ඕනෑම දෙයක් ලබා ගනී / සම්පාදනය කරනු ඇත (බොහෝ දේ ද්විමය ලෙස බාගත කරනු ඇත; සම්මත පුස්තකාලය ද අති විශාලය!). උදාහරණයක් ලෙස, අපට විශේෂිත පයිතන් සහ හැස්කල් පැකේජයක් අවශ්‍ය නම්, එම භාෂාවල සමහර විශේෂිත අනුවාදයන් සඳහා, සහ තවත් සමහර කුණු කූඩයට (මන්ද එසේ නොවන්නේ ඇයි?):

with import <nixpkgs> {};
runCommand "output.csv"
  {
    buildInputs = [
      gcc49 libjson zlib
      haskell.packages.ghc802.pandoc
      (python34.withPackages (pyPkgs: [
        pyPkgs.beautifulsoup4 pyPkgs.numpy pyPkgs.scipy
        pyPkgs.tensorflowWithoutCuda
      ]))
    ];
  }
  ''
    cp -a ${./.} src
    cd src
    make all
    ./analyse < ./dataset > $out
  ''

මෙයම nix-build run.nixක්‍රියාත්මක වන අතර, අප මුලින් ඉල්ලා සිටි සෑම දෙයක්ම ලබා ගනී (පසුව අපට එය අවශ්‍ය නම් සියල්ල හැඹිලිය හැක). ප්‍රතිදානය (ඕනෑම ගොනුවක් / නාමාවලියක් ලෙස හැඳින්වේ $out) නික්ස් විසින් ගබඩා කරනු ඇත, එය පිටවන මාර්ගය එයයි. අප විසින් ඉල්ලා ඇති සියලුම යෙදවුම් වල ගුප්ත ලේඛන හැෂ් මගින් එය හඳුනාගෙන ඇත (ස්ක්‍රිප්ට් අන්තර්ගතය, වෙනත් පැකේජ, නම්, සම්පාදක කොඩි ආදිය); එම අනෙකුත් පැකේජ හඳුනාගනු ලබන්නේ ඒවායේ යෙදවුම් වල හැෂ් මගින් වන අතර, ඒ නිසා සෑම දෙයකටම පූර්ණ පළාත් දාමයක් අප සතුව ඇත, GCC අනුවාදය සම්පාදනය කළ GCC අනුවාදය වෙත ආපසු යද්දී,

විද්‍යාත්මක කේත සඳහා මෙය අපට බොහෝ දේ මිල දී ගන්නා බවත්, ආරම්භ කිරීම සාධාරණ බවත් මම විශ්වාස කරමි. එය විද්‍යා scientists යින් විසින් ද බැරෑරුම් ලෙස සැලකීමට පටන් ගෙන ඇත, උදා (ඉහළම ගූගල් පහර) https://dl.acm.org/citation.cfm?id=2830172 එබැවින් වගා කිරීම සඳහා වටිනා නිපුණතාවයක් විය හැකිය (වැඩසටහන්කරණය මෙන්)


2
ඉතා සවිස්තරාත්මක ප්‍රයෝජනවත් පිළිතුර - මම අනෙක් පිළිතුරු වලට ඇත්තෙන්ම කැමතියි, නමුත් ප්‍රකාශයන් ඉතා ප්‍රයෝජනවත් පළමු පියවරක් සේ පෙනේ.
හෙදර්

9

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

ඔබේ සිතුවිලි කේතය සමඟ මිශ්‍ර කළ හැකි වාසියක් එහි ඇත; ප්‍රවේශයක් තවත් එකකට වඩා හොඳ වන්නේ ඇයිද යන්න පැහැදිලි කිරීම සහ තාවකාලික කොටසක ඇති පරිදි පැරණි කේතය අත්හැරීම. සෛල නිසි ලෙස භාවිතා කිරීමට අමතරව ස්වාභාවිකවම ඔබේ කේතය කැබලි කොට එය තේරුම් ගැනීමට උපකාරී වන කාර්යයන් බවට සංවිධානය කරයි.


1
ප්ලස් මෙය සැබවින්ම ප්‍රජනන හැකියාව සඳහා උපකාරී වේ - නිදසුනක් ලෙස ප්‍රකාශන සංඛ්‍යාවක් ජනනය කිරීම සඳහා ඔබට එකම කේතය ධාවනය කළ හැකිය, නැතහොත් සමාලෝචක අදහස් ඇතුළත් කිරීම සඳහා ඔබ මාස කිහිපයකට පෙර ඉවත දැමූ දෙයක් වෙත ආපසු යා හැකිය.
afaulconbridge

වැඩිදුර කියවීමට කැමති කෙනෙකුට මෙය සාක්ෂරතා වැඩසටහන්කරණය ලෙසද හැඳින්වේ.
llrs

6

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

කුඩා කේත කැබලි ලිවීම සඳහා ඒකක පරීක්ෂණ අවශ්‍යද?

කේතයේ ප්‍රමාණය ඒකක පරීක්ෂණ සඳහා අවශ්‍යතාවයට directly ජුව සම්බන්ධ නොවේ. එය වක්‍රව සම්බන්ධ වේ: සංකීර්ණ කේත පදනම් තුළ ඒකක පරීක්ෂණ වඩා වටින අතර කුඩා කේත පදනම් සාමාන්‍යයෙන් විශාල ඒවා තරම් සංකීර්ණ නොවේ.

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

පුස්තකාල A හි සංඛ්‍යා වර්ග කිරීම සිදුකරන යෙදුමක් ඔබ සතුව ඇති බව කියමු, සහ පුස්තකාලය B පයිතගරස් ප්‍රමේයයට අදාළ වේ. නිසැකවම, B රඳා පවතින්නේ A මත ය. ඔබ පුස්තකාල A හි යමක් නිවැරදි කළ යුතු අතර, අපි ඒවා වර්ග කිරීම වෙනුවට සංඛ්‍යා කියුබ් කරන දෝෂයක් හඳුන්වා දෙමු.

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

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

විශේෂයෙන් සංකීර්ණ ගණිතමය මෙහෙයුම් සඳහා, ඒකක පරීක්ෂණ ආශීර්වාදයක් විය හැකිය. ඔබ උදාහරණ ගණනය කිරීම් කිහිපයක් සිදු කරයි, ඉන්පසු ඔබ ගණනය කළ ප්‍රතිදානය සහ ඔබේ සත්‍ය ප්‍රතිදානය (එකම ආදාන පරාමිතීන් මත පදනම්ව) සංසන්දනය කරන ඒකක පරීක්ෂණ ලියයි.

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

OOP ගැන කුමක් කිව හැකිද?

OOP යනු වෙනස් ආයතන ගැන සිතීමේ ක්‍රමයකි, උදාහරණයක් ලෙස:

කරන විට Customerමිල දී ගැනීමට අවශ්ය Product, ඔහු වෙත කතා Vendorයනු ලැබීමට Order. මෙම Accountantඉන්පසු ගෙවීම් කරනු ඇත, Vendor.

ක්‍රියාකාරී ක්‍රමලේඛකයෙකු දේවල් ගැන සිතන ආකාරය සමඟ මෙය සසඳන්න:

ගනුදෙනුකරුවකුට අවශ්‍ය වූ විට purchaseProduct(), ඔහු talktoVendor()එසේ කරනු sendOrder()ඇත. එවිට ගණකාධිකාරීවරයා එසේ කරනු ඇත payVendor().

ඇපල් හා දොඩම්. මේ දෙකම වෛෂයිකව අනෙකට වඩා හොඳ නැත. සැලකිල්ලට ගත යුතු එක් සිත්ගන්නා කරුණක් නම්, ඕඕපී සඳහා Vendorදෙවරක් සඳහන් කර ඇති නමුත් එය එකම දෙයකට යොමු වේ. කෙසේ වෙතත්, ක්‍රියාකාරී වැඩසටහන්කරණය සඳහා, talktoVendor()සහ payVendor()වෙනම කරුණු දෙකකි.
මෙය ප්රවේශයන් අතර වෙනස පෙන්නුම් කරයි. මෙම ක්‍රියාවන් දෙක අතර හවුල් වෙළෙන්දන්ට විශේෂිත වූ තර්කනයක් තිබේ නම්, කේත අනුපිටපත් අඩු කිරීමට OOP උදව් කරයි. කෙසේ වෙතත්, මේ දෙක අතර හවුල් තර්කනයක් නොමැති නම්, ඒවා එකකට ඒකාබද්ධ කිරීම Vendorනිෂ් le ල කාර්යයකි (එබැවින් ප්‍රබන්ධ වැඩසටහන් වඩාත් කාර්යක්ෂම වේ).

බොහෝ විට ගණිතමය හා විද්‍යාත්මක ගණනය කිරීම් යනු ව්‍යංග හවුල් තර්කනය / සූත්‍ර මත රඳා නොපවතින සුවිශේෂී මෙහෙයුම් වේ. එම හේතුව නිසා OOP වලට වඩා ක්‍රියාකාරී ක්‍රමලේඛනය බොහෝ විට භාවිතා වේ.

විශාල ව්‍යාපෘතිවල වැඩ කිරීමට වඩා “විද්‍යාත්මක ක්‍රමලේඛන” කිරීමේදී හොඳ, පිරිසිදු කේතයක් ලිවීමට හොඳ කුමන ආකාරයේ ප්‍රවේශයන්ද?

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

හොඳ කේතයේ අර්ථ දැක්වීම වෙනස් නොවේ. මෙම සංකීර්ණ වළක්වා ගැනීමට අවශ්ය (පිරිසිදු කේතය ලිවීම මගින් සිදු කළ හැකි), කෙසේ වෙතත්, වෙනස් කරන්නේ නැහැ.

එම තර්කයම නැවත මෙහි පැමිණේ.

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

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

ඔබ මෙහි ඇති වෙනස මට දැනේ, නමුත් ඔබ පවතින කේතය දෙස ආපසු හැරී බලන විට , ඔබ ගණිතය සහ ක්‍රමලේඛනය යන දෙකම දෙස බලයි. නම් එක්කෝ වශයෙන් ඇති හෝ සංකීර්ණ වේ, එසේ නම් ඔබට එය කියවීමට සටන් කරන්නම්.

උදා: විචල්‍යයන් දෙකක් සහ ශ්‍රිතයක් එය රැකබලා ගත හැකි විට පන්තියක් අවශ්‍යද?

OOP මූලධර්ම පසෙකට දමා, දත්ත අගයන් කිහිපයක් තැබීමට මා පන්ති ලිවීමට ප්‍රධාන හේතුව වන්නේ එය ප්‍රකාශ කිරීමේ ක්‍රම පරාමිතීන් සහ ප්‍රතිලාභ අගයන් සරල කිරීමයි. උදාහරණයක් ලෙස, මට ස්ථානයක් (lat / lon pair) භාවිතා කරන ක්‍රම රාශියක් තිබේ නම්, මම ඉක්මනින් ටයිප් කිරීමට වෙහෙසට පත්වන අතර float latitude, float longitudeලිවීමට වැඩි කැමැත්තක් දක්වන්නෙමි Location loc.

ක්‍රම සාමාන්‍යයෙන් එක් අගයක් ලබා දෙන බව ඔබ සලකන විට මෙය තවදුරටත් සංයුක්ත වේ (වැඩි අගයන් ලබා දීම සඳහා භාෂා විශේෂිත ලක්ෂණ නොමැති නම්), සහ ස්ථානයක් වැනි දේවල් ඔබට අගයන් දෙකක් (lat + lon) ලබා දීමට අවශ්‍ය වේ. Locationඔබේ කේතය සරල කිරීම සඳහා පන්තියක් නිර්මාණය කිරීමට මෙය ඔබව පොළඹවයි.

උදා: විචල්‍යයන් දෙකක් සහ ශ්‍රිතයක් එය රැකබලා ගත හැකි විට පන්තියක් අවශ්‍යද?

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

නිදසුනක් වශයෙන්, පුද්ගලයෙකුගේ පළමු සහ අවසාන නම සරලව සංක්ෂිප්ත කරන ක්‍රමයක් තවමත් Personපන්තියේම රඳවා ගත හැකිය , මන්ද එය සැබවින්ම “තර්කනය” නොව ගණනය කළ අගයකි.

(මේවා සාමාන්‍යයෙන් වැඩසටහනේ වේගය වේගවත් අවසානයට වඩා කැමති අවස්ථාවන් ලෙස සලකන්න - ඔබ සමාකරණයේ කාල පියවර 25,000,000+ ධාවනය කරන විට, ඔබට එය අවශ්‍ය වේ.)

පංතියක් සෑම විටම එහි ක්ෂේත්‍රවල එකතුව තරම් විශාල වේ. අගයන් Locationදෙකකින් සමන්විත වන නැවත උදාහරණය ගෙන , මෙහිදී සැලකිල්ලට ගැනීම floatවැදගත්ය, එක් Locationවස්තුවක් වෙනම floatඅගයන් දෙකක් තරම් මතකයක් ගනී .

ඒ අර්ථයෙන් ගත් කල, ඔබ OOP භාවිතා කරනවාද නැද්ද යන්න ගැටළුවක් නොවේ. මතක අඩිපාර සමාන වේ.

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

මේ ආකාරයට සිතන්න: මම මගේ කේක් වට්ටෝරුව ඉංග්‍රීසියෙන් හෝ ස්පා Spanish ් in භාෂාවෙන් ලිවුවද කේක් පිළිස්සීමට මිනිත්තු 30 ක් ගතවනු ඇත (= ධාවන කාල ක්‍රියාකාරිත්වය) වෙනස් නොවේ. වට්ටෝරුවේ භාෂාව වෙනස් වන එකම දෙය වන්නේ කුක් අමුද්‍රව්‍ය මිශ්‍ර කරන ආකාරයයි (= බයිට් කේතය සම්පාදනය කිරීම).

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


6

පිරිසිදු විද්‍යාත්මක කේතයේ ප්‍රතිලාභ

  • ... ක්‍රමලේඛන පොත් දෙස බලන විට, ඒවා බොහෝ විට විශාල ව්‍යාපෘති වලදී ආමන්ත්‍රණය කරන බවක් පෙනේ.

  • ... සමහර සම්මත දේවල් කළ හැකි වූ විට, ලිවීමට වඩා වේගවත් වනු ඇති අතර, වැඩසටහනේ කෙටි බව නිසා ඒ හා සමාන මට්ටමේ කියවීමේ මට්ටමක් තිබිය හැකි යැයි සිතන විට කේත ලිවීම ඇත්තෙන්ම තේරුමක් තිබේද?

අනාගත කේතයක දෘෂ්ටි කෝණයෙන් ඔබේ කේතය සලකා බැලීම ප්‍රයෝජනවත් විය හැකිය.

  • ඔවුන් මෙම ගොනුව විවෘත කළේ ඇයි?
  • ඔවුන් සොයන්නේ කුමක් ද?

මගේ අත්දැකීම් වලින්,

පිරිසිදු කේතය මඟින් ඔබේ ප්‍රති .ල සත්‍යාපනය කිරීම පහසු කරයි

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

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

පිරිසිදු කේතයට අනාගත කේත සඳහා උදාහරණ කේතයක් ලෙස සේවය කළ හැකිය

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

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

නිර්දේශ

අදහස් දැක්වීම් භාවිතා කරමින් ගණිතමය සූත්‍ර "උපුටා දක්වන්න".

  • ගණිතමය සූත්‍ර "උපුටා දැක්වීමට" අදහස් එක් කරන්න, විශේෂයෙන් ඔබ ප්‍රශස්තිකරණ භාවිතා කර ඇත්නම් (ප්‍රේරක අනන්‍යතා, ටේලර් ශ්‍රේණි ආදිය).
  • ඔබට පොතෙන් සූත්‍රය ලැබුනේ නම්, John Smith Method from Some Book 1st Ed. Section 1.2.3 Pg 180වෙබ් අඩවියක හෝ කඩදාසියක සූත්‍රය සොයාගත හොත් එය සඳහන් කරන්න.
  • "සබැඳිය පමණක්" අදහස් දැක්වීමෙන් වැළකී සිටීමට මම නිර්දේශ කරමි, මිනිසුන්ට එය ගූගල් කිරීමට ඉඩ දීම සඳහා ඔබ කොහේ හරි ක්‍රමයක් සඳහන් කර ඇති බවට වග බලා ගන්න , මම පැරණි අභ්‍යන්තර පිටු වෙත හරවා යවන ලද "සබැඳි පමණක්" අදහස් කිහිපයක් වෙතට දිව ගිය අතර ඒවා ඉතා කලකිරීමට පත්විය හැකිය .
  • යුනිකෝඩ් / ඒඑස්සීඅයි හි කියවීම තවමත් පහසු නම් ඔබට ඔබේ අදහස් දැක්වීමේ සූත්‍රය ටයිප් කිරීමට උත්සාහ කළ හැකිය, නමුත් මෙය ඉතා අවුල් සහගත විය හැකිය (කේත අදහස් ලාටෙක්ස් නොවේ).

අදහස් wis ානවන්තව භාවිතා කරන්න

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

විස්තරාත්මක විචල්‍ය නම් භාවිතා කරන්න

  • තනි අකුරු විචල්‍යයන් සූත්‍රයක කොටසක් නම් හොඳම විකල්පය විය හැකිය.
  • අනාගත පා readers කයන්ට ඔබ ලියූ කේතය දෙස බලා එය ක්‍රියාත්මක කරන සමීකරණය සමඟ සංසන්දනය කිරීම ඉතා වැදගත් විය හැකිය.
  • සුදුසු විට, එහි සැබෑ අරුත විස්තර කිරීම සඳහා එයට උපසර්ගයක් එක් කිරීම සලකා බලන්න, උදා. xBar_AverageVelocity
  • කලින් සඳහන් කළ පරිදි, කොතැනක හෝ අදහස් දැක්වීමක දී ඔබ නමින් භාවිතා කරන සූත්‍රය / ක්‍රමය පැහැදිලිව සඳහන් කිරීමට මම නිර්දේශ කරමි.

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

කුඩා කේත කැබලි ලිවීම සඳහා ඒකක පරීක්ෂණ අවශ්‍යද?

මම හිතන්නේ ඒකක පරීක්ෂාව ප්‍රයෝජනවත් වේවි, විද්‍යාත්මක කේත සඳහා හොඳම ඒකක පරීක්ෂණ ක්‍රමය දන්නා නරක හා හොඳ දත්ත මත ක්‍රියාත්මක වන පරීක්ෂණ මාලාවක් බව මම සිතමි.

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

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

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

හරස් වලංගුකරණය වැනි දෙයක් භාවිතා කිරීම ගැන සලකා බලන්න , වැඩි විස්තර සඳහා වලංගු කරන ලද මෙම ලිපිය බලන්න .

අනුවාද පාලනය භාවිතා කරන්න

අනුවාද පාලනය භාවිතා කිරීම සහ ඔබේ ගබඩාව බාහිර වෙබ් අඩවියක සත්කාර කිරීම මම නිර්දේශ කරමි. නොමිලේ ගබඩාවන් සඳහා සත්කාරකත්වය සපයන අඩවි තිබේ.

වාසි:

  1. ඔබේ දෘඩ තැටිය අසමත් වුවහොත් එය උපස්ථයක් සපයයි
  2. එය ඉතිහාසයක් සපයන අතර, ඔබ වෙනත් ගොනුවක් අහම්බෙන් වෙනස් කිරීම නිසා මෑතකදී ඇති වූ ගැටළුවක් ඇතිවූයේ නම් කරදර වීමෙන් ඔබව වළක්වයි.
  3. අතු බෙදීම් භාවිතා කිරීමට එය ඔබට ඉඩ සලසයි, එය සම්බන්ධයක් නැති වැඩවලට බලපෑමක් නොකර දිගු කාලීන / පර්යේෂණාත්මක කේත මත වැඩ කිරීමට හොඳ ක්‍රමයකි.

කේතය පිටපත් කිරීමේදී / ඇලවීමේදී ප්‍රවේශම් වන්න

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

  • කේතය පිටපත් කිරීම / ඇලවීම මඟින් ඔබේ කාලය ඉතිරි කර ගත හැකිය, නමුත් එය ඔබට කළ හැකි ඉතාම භයානක දෙයකි, විශේෂයෙන් එය ඔබ විසින්ම ලියා නොතිබූ කේතය නම් (උදා: එය සගයකුගේ කේතයක් නම්).

  • ඔබ කේතය වැඩ කර පරීක්‍ෂා කළ විගසම, ඕනෑම විචල්‍යයක් නැවත නම් කිරීමට හෝ ඔබට නොතේරෙන ඕනෑම දෙයක් අදහස් දැක්වීමට ඉතා ප්‍රවේශමෙන් නිර්දේශ කරමි.



6

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

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

එවිට ඔබට ප්‍රයෝජනවත් වන්නේ කුමක්ද?

  • අනුවාද පාලනය හොඳයි, මන්ද එය ඔබගේ කාර්යය ඉතා පහසුවෙන් උපස්ථ කිරීමට ඉඩ සලසයි. 2018 වන විට ගිතුබ් එසේ කිරීමට ඉතා ජනප්‍රිය ස්ථානයකි (අවශ්‍ය නම් ඔබට එය පසුව ගෙන යා හැකිය - git ඉතා නම්‍යශීලී වේ). උපස්ථ සඳහා ලාභ සහ සරල ආදේශකයක් වන්නේ ඔබේ මෙහෙයුම් පද්ධතියේ ස්වයංක්‍රීය උපස්ථ ක්‍රියා පටිපාටි (මැක් සඳහා කාල යන්ත්‍රය, ලිනක්ස් සඳහා rsync යනාදිය). ඔබේ කේතය ස්ථාන කිහිපයක තිබිය යුතුය!
  • ඒකක පරීක්ෂණ හොඳයි, මන්ද ඔබ ඒවා මුලින් ලියන්නේ නම් කේතය ඇත්ත වශයෙන්ම කරන්නේ කුමක්ද යන්න පරීක්ෂා කර බැලීමට ඔබට බල කෙරෙනු ඇත, එය ඔබේ කේතය සඳහා වඩාත් ප්‍රයෝජනවත් API එකක් නිර්මාණය කිරීමට උපකාරී වේ. ඔබ නැවත ලිවීමේ කේතයකට පසුව නැවත භාවිතා කිරීමට පෙළඹෙන්නේ නම් මෙය ප්‍රයෝජනවත් වන අතර ඇල්ගොරිතමයක් වෙනස් කිරීමේදී එය ඔබට උපකාරී වේ.
  • ප්‍රලේඛනය. ඔබ භාවිතා කරන ක්‍රමලේඛන භාෂාවෙන් නිසි ලියකියවිලි ලිවීමට ඉගෙන ගන්න (උදාහරණයක් ලෙස ජාවා සඳහා javadoc). අනාගතය සඳහා ඔබ ලියන්න. මෙම ක්‍රියාවලියේදී හොඳ විචල්‍ය නම් ලේඛනගත කිරීම පහසු කරන බව ඔබට පෙනී යනු ඇත. අනුකරණය කරන්න. කවියෙකු කවි වලට දක්වන පරිද්දෙන් ඔබේ ලියකියවිලි වලට සමාන සැලකිල්ලක් දක්වන්න.
  • හොඳ මෙවලම් භාවිතා කරන්න. ඔබට උදව් වන IDE එකක් සොයාගෙන එය හොඳින් ඉගෙන ගන්න. වඩා හොඳ නමකට විචල්‍ය නම් කිරීම වැනි ප්‍රතිනිර්මාණය කිරීම මේ ආකාරයෙන් පහසු වේ.
  • ඔබට සම වයසේ මිතුරන් සිටී නම් සම වයස් සමාලෝචන භාවිතා කිරීම ගැන සලකා බලන්න. ඔබගේ කේතය දෙස බාහිරින් බැලීමට සහ තේරුම් ගැනීමට නම්, ඔබ ලියන අනාගතයේ මෙහි සහ දැන් අනුවාදය වේ. ඔබේ සම වයසේ මිතුරෙකුට ඔබේ කේතය තේරෙන්නේ නැත්නම්, ඔබ පසුව එය තේරුම් නොගනී.

මෙම පිළිතුරට ඉහළ ප්‍රතිචාරයක් නොලැබුනේ කෙසේද? එය දැන් තිබේ. අපගේ කණ්ඩායම තුල්‍ය සමාලෝචන සියල්ලන්ගේම වඩාත්ම tools ලදායී මෙවලමක් ලෙස සොයාගෙන ඇත, එය විද්‍යාත්මක කේතයට පැමිණෙන විට ඒකක පරීක්ෂණවලට වඩා වැදගත් ය. විද්‍යාත්මක සඟරා ලිපියක සංකීර්ණ සමීකරණ සමූහයක් කේතයට පරිවර්තනය කිරීමේදී දෝෂයක් සිදු කිරීම පහසුය. බොහෝ විට දුප්පත් ක්‍රමලේඛකයින් සඳහා විද්‍යා ists යින් සහ ඉංජිනේරුවන් සෑදී ඇත; තුල්‍ය සමාලෝචනයට කේතය නඩත්තු කිරීමට / තේරුම් ගැනීමට / භාවිතා කිරීමට අපහසු වන වාස්තු විද්‍යාත්මක කැතයන් අල්ලා ගත හැකිය.
ඩේවිඩ් හැමන්

5

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

"මම ක්‍රමලේඛනය සමඟ පරීක්ෂා කරන හෝ පර්යේෂණ කරන ගණිතය හෝ විද්‍යාව ගැන වැඩි යමක්."

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

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

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


5

ඔබේ සමස්ත කේතය සංවිධානාත්මකව හා ක්‍රියාකාරීව තබා ගැනීම සඳහා අනුවාද පාලනය සහ ඒකක පරීක්ෂාව තරම් විශාල වන අතර පිරිසිදු කේත ලිවීමට ඔබට උදව් නොකරයි.

  • අනුවාදය පාලනය මඟින් කේතය අවුල් සහගත වන්නේ කෙසේද සහ කවදාද යන්න බැලීමට ඔබට ඉඩ සලසයි.
  • කේතය සම්පූර්ණ අවුල් ජාලයක් වුවද එය තවමත් ක්‍රියාත්මක වන බව ඒකක පරීක්ෂණ මඟින් සහතික කරනු ඇත.

අවුල් සහගත කේත ලිවීමෙන් ඔබව වළක්වා ගැනීමට ඔබට අවශ්‍ය නම්, අවුල් සිදුවන තැන ක්‍රියාත්මක වන මෙවලමක් ඔබට අවශ්‍යය: ඔබ කේතය ලියන විට. කරන ජනප්‍රිය මෙවලමක් ලින්ටර් ලෙස හැඳින්වේ. මම පයිතන් සංවර්ධකයෙකු නොවේ, නමුත් පෙනෙන්නේ පයිලින්ට් හොඳ විකල්පයක් විය හැකි බවයි.

ලින්ටරයක් ​​ඔබ ලියා ඇති කේතය දෙස බලන අතර එය වින්‍යාසගත කළ හැකි හොඳම භාවිතයන් සමූහයකට සංසන්දනය කරයි. ලයිනර්ට විචල්යයන් තිබිය යුතු රීතියක් තිබේ නම් camelCaseසහ ඔබ එකක් ලිවුවහොත් snake_caseඑය වැරැද්දක් ලෙස සලකුණු කරයි. හොඳ ලයිනර් වලට “ප්‍රකාශිත විචල්‍යයන් භාවිතා කළ යුතුය” සිට “ශ්‍රිතවල චක්‍රීය සංකීර්ණතාව 3 ට වඩා අඩු විය යුතුය” යන නීති ඇත.

බොහෝ කේත සංස්කාරකවරුන් ඔබ සුරකින සෑම අවස්ථාවකදීම හෝ සාමාන්‍යයෙන් ඔබ ටයිප් කරන ආකාරයටම ලයිනරයක් ධාවනය කිරීමට වින්‍යාසගත කළ හැකි අතර ඉන්ලයින් ගැටළු දක්වයි. ඔබ වැනි දෙයක් ටයිප් කළහොත් x = 7, xදිගු, වඩා හොඳ නමක් භාවිතා කිරීමට උපදෙස් සහිතව, ඉස්මතු වනු ඇත (ඔබ වින්‍යාස කර ඇත්තේ එය නම්). මෙය බොහෝ වචන සකසනයන්හි අක්ෂර වින්‍යාසය පරීක්ෂා කිරීම, නොසලකා හැරීම දුෂ්කර කිරීම සහ වඩා හොඳ පුරුදු ඇති කර ගැනීමට උපකාරී වේ.


මේ සඳහා තවත් බොහෝ දේ තිබිය යුතුය. +1
හෙදර්

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

4

ඔබ ලැයිස්තුගත කළ සෑම දෙයක්ම රූපක මෙවලම් පෙට්ටියේ මෙවලමකි. ජීවිතයේ ඕනෑම දෙයක් මෙන්, විවිධ මෙවලම් විවිධ කාර්යයන් සඳහා සුදුසු වේ.

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

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

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

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


4

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

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

අනුවාද පාලනය කරන්න, ඔබේ භාවිතයන් වැඩි දියුණු කරන්න. නමුත් ඔබ යන විට ඔබටම කරුණු පහදා දෙන්න. එය ඉතා හොඳින් ක්‍රියාත්මක වේ.


4

මේ ආකාරයේ වැඩසටහනක් සඳහා වැදගත් වන ගුණාංග මොනවාද?

එය නඩත්තු කිරීම හෝ පරිණාමය කිරීම පහසු ද යන්න බොහෝ විට වැදගත් නොවේ, මන්ද එය සිදුවිය නොහැකි අවස්ථාවන් ය.

එය කොතරම් කාර්යක්ෂමද යන්න බොහෝ විට වැදගත් නොවේ.

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

එය කියවිය හැකි වීම වැදගත් විය හැකිය: ඔබේ කේතය කියවන කෙනෙකුට එය කළ හැකි යැයි කියා පහසුවෙන්ම ඒත්තු ගැන්විය හැකිය.

එය නිවැරදි බව නිසැකවම වැදගත් ය. වැඩසටහන වැරදි ප්‍රති results ල ලබා දෙන්නේ නම්, එය ඔබගේ විද්‍යාත්මක නිගමන කවුළුවෙන් පිටත ය. නමුත් එයට අවශ්‍ය වන්නේ ඔබ එය සත්‍ය වශයෙන්ම ඉල්ලා සිටින ආදානය නිවැරදිව සැකසීමට පමණි; ඔබගේ සියලු දත්ත අගයන් ධනාත්මක නම් negative ණාත්මක ආදාන දත්ත අගයන් ලබා දෙන්නේ නම් එය කඩා වැටේද යන්න ඇත්ත වශයෙන්ම වැදගත් නොවේ.

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

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


4

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

උදාහරණයක් ලෙස, ඔබේ ක්ෂේත්‍රයේ (ECEF, NED, lat / lon, WGS84 යනාදිය) සම්බන්ධීකරණ පරිවර්තනයන් රාශියක් සමඟ කටයුතු කිරීමට ඔබට සිදු විය හැකිය, එබැවින් වැනි ශ්‍රිතයක් convert_ecef_to_ned()නව ව්‍යාපෘතියකට යා යුතුය CoordinateTransformations. ව්‍යාපෘතිය අනුවාද පාලනය යටතේ තබා ඔබේ දෙපාර්තමේන්තුවේ සේවාදායකයන් මත සත්කාර කරන්න, එවිට අනෙක් පුද්ගලයින්ට එය භාවිතා කළ හැකිය (සහ බලාපොරොත්තු සහගතව වැඩිදියුණු කළ හැකිය). වසර කිහිපයකට පසු ඔබේ ව්‍යාපෘති සමඟ ශක්තිමත් පුස්තකාල එකතුවක් තිබිය යුතුය. එය කිසියම් ගැටලුවකට / පර්යේෂණ වසමකට විශේෂිත කේතයක් පමණි.

තවත් පොදු උපදෙස් කිහිපයක්:

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

එය වැඩිදියුණු කිරීමට අනෙක් අයට ඉඩ නොදෙන්න. කේතයේ පරමාර්ථය ඔවුන්ට නොතේරෙන අතර ඒවා අවුල් කරයි.
mathreadler

athmathreadler හොඳයි ඒවා සාමාන්‍ය උපයෝගිතා පුස්තකාල නම් අනෙක් අයට අවුල් කිරීම ටිකක් අපහසු වනු ඇත, එයයි අදහස.
jigglypuff

පොදු අරමුණු පුස්තකාල අවුල් කිරීම දුෂ්කර ඇයි? ඔබ කරන්නේ කුමක්ද යන්න පිළිබඳව ඔබට අදහසක් නොමැති නම් හෝ ඔබ දැඩි උත්සාහයක් දරන්නේ නම් එය එතරම් අපහසු නොවේ.
mathreadler

athmathreadler උදාහරණයක් ලෙස පරිවර්තනයන් හෝ ඒකක පරිවර්තනය සම්බන්ධීකරණය කිරීම සඳහා සාමාන්‍යයෙන් ඇත්තේ එක් මාර්ගයක් පමණි.
jigglypuff

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

3

පහත දැක්වෙන්නේ මගේ මතයන් වන අතර මගේම විශේෂිත මාවතට එය බෙහෙවින් බලපායි.

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

හොඳ, කියවිය හැකි, නිදොස් කළ හැකි, code න කේතයක් ලිවීමට බොහෝ කාලයක් හා වෑයමක් අවශ්‍ය වේ. බොහෝ අවස්ථාවන්හීදී, සීමිත සැලසුම් ක්ෂිතිජයක් ලබා දී ඇති විට, මෙය කිරීම වටී නැත (විශ්ලේෂණ අංශභාගය).

එක් සගයකුට නියමාකාර නීතියක් තිබුණි; ඔබ තෙවන වරටත් එකම ආකාරයේ දෙයක් කරන්නේ නම් උත්සාහය ආයෝජනය කරන්න, එසේ නොමැතිනම් ඉක්මන් හා අපිරිසිදු රැකියාවක් සුදුසු වේ.

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

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

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


3

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

නමුත් විද්‍යාත්මක කේත සඳහා වන ඒකාබද්ධතා පරීක්ෂණ සඳහා මම ඇත්තෙන්ම කැමතියි:

ඔබේ කේතයෙන් තනිවම ක්‍රියා කළ හැකි කුඩා කැබැල්ලක් වෙන් කරන්න, උදා: ඊටීඑල් නල මාර්ගය. ඉන්පසු දත්ත සපයන පරීක්ෂණයක් ලියන්න, etl නල මාර්ගය (හෝ පියවරක්) ධාවනය කර ප්‍රති result ලය ඔබේ අපේක්ෂාවන්ට ගැලපේදැයි පරීක්ෂා කරන්න. පරීක්ෂා කරන ලද කැබැල්ල කේත ගොඩක් විය හැකි නමුත්, පරීක්ෂණය තවමත් වටිනාකමක් ලබා දෙයි:

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

මම බොහෝ විට මෙම තාක්‍ෂණය භාවිතා කරන අතර බොහෝ විට සාපේක්ෂ වශයෙන් කියවිය හැකි ප්‍රධාන ශ්‍රිතයක් සමඟ අවසන් වන නමුත් උප ශ්‍රිත බොහෝ විට තරමක් දිගු හා කැත වන නමුත් ශක්තිමත් I / O මායිම් නිසා ඉක්මනින් වෙනස් කර නැවත සකස් කළ හැකිය.


2

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

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


2

ලිවීමේ කේතය සමඟ - පොදුවේ ලිවීමේදී මෙන් - ප්‍රධාන ප්‍රශ්නය වන්නේ:

ඔබේ මනසෙහි ඇත්තේ කුමන පා er කයා ද? හෝ ඔබේ කේතය පරිභෝජනය කරන්නේ කවුද?

විධිමත් කේතීකරණ මාර්ගෝපදේශ වැනි දේවල් ඔබ ඔබේ එකම ප්‍රේක්ෂකයා වන විට තේරුමක් නැත.

අනෙක් අතට, කේතය යම් ආකාරයකින් ලිවීම ප්‍රයෝජනවත් වනු ඇත, ඔබේ අනාගතය ඔබට එය වහාම තේරුම් ගත හැකිය.

එබැවින් "හොඳ ශෛලියක්" එකක් වනු ඇත, එය ඔබට වඩාත්ම උපකාරී වේ. එම විලාසිතාව කෙබඳු විය යුතුද යන්න මට දිය නොහැකි පිළිතුරකි.

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

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

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.