MVC සහ TDD ක්‍රීඩා ගෘහ නිර්මාණ ශිල්පයේ වැඩිපුර සේවයේ යොදවා නැත්තේ ඇයි? [වසා ඇත]


155

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

නමුත් වෙබ් යෙදුම්වල 'ව්‍යවසාය' කේතීකරණ භාවිතයන් භාවිතා කිරීමට උත්සාහ කිරීමෙන්, ක්‍රීඩා මූලාශ්‍ර කේතය දෙස බැලීමෙන් මගේ හිසට බරපතල වේදනාවක් ඇති වේ: "ව්‍යාපාර තර්කනය සමඟ මෙම දැක්ම තර්කනය කරන්නේ කුමක් ද? "

මම ක්‍රීඩා ව්‍යාපෘතියක් ආරම්භ කිරීමට සූදානම් වන විට මෙය මට කරදරයක් වන අතර, dev ක්‍රියාවලිය mvc / tdd කිරීමට උත්සාහ කිරීම අපට බාධාවක් වේවිද නැතහොත් අපට උදව් කරයිද යන්න මට විශ්වාස නැත, මෙය භාවිතා කරන බොහෝ ක්‍රීඩා උදාහරණ මා නොදකින බැවින් හෝ ප්‍රජාව තුළ වඩා හොඳ වාස්තු විද්‍යාත්මක භාවිතයන් සඳහා වැඩි තල්ලුවක්.

පහත දැක්වෙන්නේ මූලාකෘතිකරණ ක්‍රීඩා පිළිබඳ විශිෂ්ට ලිපියකින් උපුටා ගැනීමකි , නමුත් නිෂ්පාදන ක්‍රීඩා කේතය ලිවීමේදී බොහෝ ක්‍රීඩා ක්‍රීඩකයින් භාවිතා කරන ආකල්පය මට හරියටම පෙනේ:

වැරැද්ද # 4: පද්ධතියක් ගොඩනැගීම මිස ක්‍රීඩාවක් නොවේ

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

අලංකාර ක්‍රීඩා සංරචක පද්ධතියක් ලියන්න එපා, සංස්කාරකය සම්පූර්ණයෙන් මඟ හැර රාජ්‍යය කේතයෙන් දැඩි කරන්න, දත්ත මත පදනම් වූ, ස්වයං විග්‍රහ කිරීම, එක්ස්එම්එල් උමතුවෙන් වළකින්න, හානිදායක දේ කේත කරන්න.

... ඔබට හැකි ඉක්මනින් තිරය මත දේවල් ලබා ගන්න.

“අපි වැඩිපුර කාලයක් ගත කර මෙය නිවැරදි ආකාරයෙන් කළහොත් අපට එය ක්‍රීඩාවේදී නැවත භාවිතා කළ හැකිය” යන තර්කය කිසි විටෙකත් භාවිතා නොකරන්න. කවදාවත්.

ක්‍රීඩා (බොහෝ දුරට) දෘශ්‍යමය වශයෙන් නැඹුරු වී ඇති නිසා කේතය දෘෂ්ටි කෝණයෙන් බරින් යුක්ත වන බවක් හැඟේ, එබැවින් ආකෘති / පාලකයන් වෙත දේවල් ගෙනයාමෙන් ලැබෙන ප්‍රතිලාභ තරමක් අවම වේ, එබැවින් කරදර වන්නේ ඇයි?

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

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

සමහර විට මම වැරදි මූලාශ්‍ර කේතය දෙස බලමින් සිටිමි, නමුත් ක්‍රීඩා නිර්මාණයේ යෙදී ඇති මෙම 'ව්‍යවසාය' භාවිතයන් අප දකින්නේ නැත්තේ ඇයි? ක්‍රීඩා ඔවුන්ගේ අවශ්‍යතාවන්ට වඩා බෙහෙවින් වෙනස්ද, නැතහොත් ජනතාවක් / සංස්කෘතික ප්‍රශ්නයක්ද (එනම් ගේම් ඩෙව්ස් වෙනස් පසුබිමකින් පැමිණ ඇති අතර විවිධ කේතීකරණ පුරුදු තිබේද)?

Answers:


137

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

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

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

සිද්ධියක්: Peggle , PopCap ක්රීඩා විසින්. ක්‍රීඩාවේ මූලික කාර්මිකයා වන්නේ බෝල භෞතික විද්‍යාවයි. ඔවුන් එය පරිපූර්ණ කළා! මට විශ්වාසයි ඔවුන් සෑහෙන කාලයක් ගත කළේ එය පරිපූර්ණ බව සහතික කර ගැනීමටයි, මන්ද එය ක්‍රීඩාව බවට පත් කරන්නේ එයයි. නමුත් ඒ සමඟම, මට ඔවුන්ගේ ක්‍රීඩාවේ මුල් මූලාකෘතියක් මුළුමනින්ම නිරූපණය කළ හැකිය, එය ස්ප්‍රීතු තිරය වෙත ඇද ගන්නා අතර සමහර විට වඩාත් ප්‍රාථමික ision ට්ටන අනාවරණය කර ගැනීම සහ පිම්බීම සිදු කරයි, ක්‍රීඩා අදහස විනෝදජනකදැයි බැලීමට. බෝලයකට වෙඩි තැබීම සහ එය පිම්බීම නැරඹීම ඇත්තෙන්ම විනෝදජනක විය හැකි බව දැනගත් පසු, ඔවුන් පන්දුව පිම්බීම ශෝධනය කළහ. (මේ සියල්ල හුදෙක් සමපේක්ෂනයකි)

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

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

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

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

ඒයි, වැඩ කරයි කියා ඔබ සිතන දේ කරන්න. ඔබට සෑම විටම එය වෙනස් කිරීමට හෝ සීරීමට හා නැවත ආරම්භ කළ හැකිය. ඕනෑම ආකාරයක ඉංජිනේරු විද්‍යාවක නියම දෙය එයයි; මුලදී ඔබ සාර්ථක නොවන්නේ නම්, වෙනස් දෙයක් උත්සාහ කරන්න. (හෝ එවැනි දෙයක් :-P) ඔබ කොන්ක්‍රීට් වත් කරන්නේ නැත; මෘදුකාංගය අනුකූල වේ.


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


33

ටික කලකට පෙර SO පිළිබඳ සමාන ප්‍රශ්නයකට මගේ මුල් පිළිතුර මෙන්න , අවම වශයෙන් ඔබේ ප්‍රශ්නයේ MVC කොටස ගැන:

එය කලාතුරකින් ක්‍රීඩා වල භාවිතා වේ. එයට හේතුව සොයා ගැනීමට මට යම් කාලයක් ගත විය, නමුත් මෙන්න මගේ සිතුවිලි:

නිරූපණයන් දෙකක් අතර වෙනසක් ඇති කිරීම සඳහා MVC පවතී. ආදර්ශය යනු ඔබේ දත්තවල වියුක්ත නිරූපණයයි. යන්ත්රය ඔබගේ යෙදුමේ තත්වය දෙස බලන ආකාරයයි. දර්ශනය (සහ පාලකයන්) නිරූපණය කරන්නේ මිනිසුන්ට අර්ථවත් වන අයුරින් එම පද්ධතියේ වඩාත් දෘශ්‍යමාන ක්ෂණික දර්ශනයක්.

බොහෝ ව්‍යාපාරික යෙදුම් වල, මෙම ලෝක දෙක බෙහෙවින් වෙනස් ය. උදාහරණයක් ලෙස, පැතුරුම්පතක ආකෘතිය හුදෙක් 2D අගයන් වේ. පික්සල් වල සෛල කොතරම් පුළුල්ද, අනුචලන තීරු තිබේද යන්න ගැන සිතා බැලිය යුතු නැත. ඒ අතරම, පැතුරුම්පත් දර්ශනය සෛල අගයන් ගණනය කරන්නේ හෝ ගබඩා කරන්නේ කෙසේදැයි නොදනී.

ක්‍රීඩාවකදී, එම ලෝක දෙක එකිනෙකට වඩා සමීප ය. ක්‍රීඩා ලෝකය (ආකෘතිය) යනු සාමාන්‍යයෙන් යම් අතථ්‍ය අවකාශයක ස්ථානගත කර ඇති ආයතන සමූහයකි. ක්‍රීඩා දර්ශනය යනු කිසියම් අතථ්‍ය අවකාශයක ස්ථානගත කර ඇති ආයතන සමූහයකි. මායිම් පරිමාවන්, සජීවිකරණය, පිහිටීම යනාදිය, ඔබ "දර්ශනයේ" කොටසක් ලෙස සලකන සෑම දෙයක්ම "ආකෘතිය" විසින් සෘජුවම භාවිතා කරයි: සජීවිකරණය භෞතික විද්‍යාවට හා AI වලට බලපායි.

අවසාන ප්‍රති result ලය වනුයේ ක්‍රීඩාවක ආකෘතිය සහ දර්ශනය අතර රේඛාව අත්තනෝමතික වන අතර එය ප්‍රයෝජනවත් නොවනු ඇත: ඔබ ඔවුන් අතර බොහෝ රාජ්‍යයන් අනුපිටපත් කිරීම අවසන් කරයි.

ඒ වෙනුවට, ක්‍රීඩා වසම් සීමාවන් ඔස්සේ දේවල් විසන්ධි කිරීමට නැඹුරු වේ: AI, භෞතික විද්‍යාව, ශ්‍රව්‍ය, විදැහුම්කරණය ආදිය හැකි තරම් වෙනම තබා ඇත.


20

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

එසේම, වෙන්වීම පවතී; බොහෝ විට එය එම්වීසී රටාව මෙන් වයර් නොවේ. විදැහුම්කරණ එන්ජිමක් (දර්ශනය), පරිශීලක ආදාන හැසිරවීම (පාලකය) සහ සෙසු ක්‍රීඩාවේ තර්කනය, අයි, සහ භෞතික විද්‍යාව (ආදර්ශ) ඇත. ඒ ගැන සිතන්න; ඔබ පරිශීලක ආදානය ලබා ගන්නේ නම්, ai ධාවනය කර රූපය තත්පරයට 60 වතාවක් විදහා දක්වන්නේ නම්, වෙනස් වී ඇති දේ ඔබට පැවසීමට ඔබට ආකෘතිය සහ දැක්ම අතර නිරීක්ෂකයෙකු අවශ්‍ය වන්නේ ඇයි? ක්‍රීඩා වලදී ඔබට ඔබ්සර්වර් රටාව අවශ්‍ය නොවන බව මා පවසන පරිදි මෙය අර්ථ නිරූපණය නොකරන්න, නමුත් ඔබට මේ අවස්ථාවේ දී ඇත්ත වශයෙන්ම අවශ්‍ය නොවේ. ඔබ ඒ සියලු වැඩ, සෑම රාමුවක්ම, කෙසේ හෝ කරනවා.

සංවර්ධන චිත්‍රාගාරවල ටීඩීඩී කිසිසේත්ම භාවිතා නොකලද, අපි මෘදුකාංග සංවර්ධනය සඳහා වේගවත් භාවිතයන් භාවිතා කරන අතර SCRUM අවම වශයෙන් යුරෝපයේ ජනප්‍රිය තේරීමක් ලෙස පෙනේ. හේතුව සරලයි, වෙනස්කම් සෑම තැනකින්ම පැමිණේ. කලාකරුවන්ට වැඩිපුර වයනය අයවැය, විශාල ලෝක, වැඩි ගස් අවශ්‍ය වන අතර නිර්මාණකරුවන්ට පොහොසත් කතාවක් (තැටියේ වැඩි අන්තර්ගතයක්), ප්‍රවාහ ලෝකයක් සහ ප්‍රකාශකයන්ට අවශ්‍ය වන්නේ ඔබ නියමිත වේලාවට හා අයවැයෙන් අවසන් කිරීමටය. ඒ හැරුණු විට “කලාවේ තත්වය” වේගයෙන් වෙනස් වේ.

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

කොන්සෝල ලෝකයේ මෙය තවමත් වෙනස් බව මතක තබා ගන්න, මන්ද ඔබ දෘඩාංග සඳහා වැඩි වැඩියෙන් ක්‍රමලේඛනය කර වෙනත් ඕනෑම දෙයකට. මෙය සාමාන්‍යයෙන් (PS2 / PS3) යන්නෙන් අදහස් වන්නේ දත්ත ප්‍රවාහය වඩා වැදගත් වන අතර එවිට සෑම අවස්ථාවකම පාහේ කේතයේ ප්‍රවාහය; කාර්ය සාධනය සලකා බැලීම හේතුවෙන්. බොහෝ අවස්ථාවන්හිදී වාස්තු විද්‍යාත්මක මෙවලමක් ලෙස TDD භාවිතය අහෝසි කරයි. හොඳ OOP කේතයට සාමාන්‍යයෙන් නරක දත්ත ප්‍රවාහයක් ඇති අතර එය දෛශිකකරණය හා සමාන්තරකරණය කිරීම දුෂ්කර කරයි.


13

MVC සහ TDD ක්‍රීඩා ගෘහ නිර්මාණ ශිල්පයේ වැඩිපුර සේවයේ යොදවා නැත්තේ ඇයි?

අවවාදයයි: ඉදිරි මතය.

MVC භාවිතා නොකෙරේ (බොහෝ) මන්ද:

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

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

TDD භාවිතා නොකෙරේ (බොහෝ) මන්ද:

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

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

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


9

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

උදා: යුනිටි 3 ඩී හි ඔබ දකින සංරචක ආකෘතිය ක්‍රීඩා කේතය සංවිධානය කිරීමට හොඳම ක්‍රමයයි.


4

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

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


3

ක්‍රීඩා පද්ධති සෙමින් වඩා හොඳ පුරුදු කරා ගමන් කරයි. එක්ස්එන්ඒ වැනි රාමු මඟින් සැලසුම් කිරීමේදී හෝ ක්‍රියාත්මක කිරීමේ වේලාවට වැඩි යමක් එකතු නොකර කේතය වඩාත් සාමාන්‍යකරණය / පිරිසිදු කිරීම පිළිබඳ අවබෝධයක් ලබා දේ. නමුත් පොදුවේ ගත් කල, ක්‍රීඩා පද්ධති යනු සංකීර්ණ හා එදිරිව ක්‍රියාත්මක කිරීමේ වේගය ප්‍රශස්ත කිරීම බව මම කියමි. මෘදුකාංග ඉංජිනේරු සංකල්ප සහ පද්ධති සැලසුම් කිරීම එවැනි පරිසරයක ප්‍රමුඛතාවය # 1 පමණක් නොවේ.

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

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


2

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

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

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

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

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

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.