නිර්මාණ රටාවන්හි අපට මෙතරම් පන්ති අවශ්‍ය වන්නේ ඇයි?


217

මම ජ්‍යෙෂ් ors යන් අතර කනිෂ් develop සංවර්ධකයෙකු වන අතර ඔවුන්ගේ චින්තනය, තර්කණය තේරුම් ගැනීමට බොහෝ සෙයින් වෙහෙසෙමි.

මම ඩොමේන් ඩ්‍රයිවින් ඩිසයින් (ඩීඩීඩී) කියවන අතර අපට මෙතරම් පංති සෑදිය යුත්තේ මන්දැයි තේරුම් ගත නොහැක. මෘදුකාංග සැලසුම් කිරීමේ එම ක්‍රමය අප අනුගමනය කරන්නේ නම්, පන්ති 20-30 කින් අවසන් වන අතර ඒවා ගොනු දෙකක් සහ 3-4 කාර්යයන් සමඟ ප්‍රතිස්ථාපනය කළ හැකිය. ඔව්, මෙය අවුල් සහගත විය හැකි නමුත් එය වඩා නඩත්තු කළ හැකි සහ කියවිය හැකි ය.

කිසියම් ආකාරයක දෙයක් කිරීමට මට අවශ්‍ය ඕනෑම වේලාවක EntityTransformationServiceImpl, මට පන්ති, අතුරුමුහුණත්, ඒවායේ ක්‍රියාකාරී ඇමතුම්, ඉදිකිරීම්කරුවන්, ඒවායේ නිර්මාණය සහ යනාදිය අනුගමනය කළ යුතුය.

සරල ගණිතය:

  • පංති X 10 ට එදිරිව ව්‍යාජ කේත පේළි 60 ක් (එවැනි තර්කනයන් අපට සම්පූර්ණයෙන්ම වෙනස් යැයි කියමු) = අවුල් සහගත කේත පේළි 600 ක් එදිරිව පන්ති 100 ක් + ඒවා ඔතා කළමනාකරණය කිරීමට තවත් කිහිපයක්; පරායත්ත එන්නත් එකතු කිරීමට අමතක නොකරන්න.
  • අවුල් සහගත කේත පේළි 600 ක් කියවීම = එක් දිනක්
  • පංති 100 = සතියක්, කුමන දේ කරන්නේද, කවදාද යන්න තවමත් අමතක කරන්න

හැමෝම කියන්නේ නඩත්තු කිරීම පහසුයි, නමුත් කුමක් සඳහාද? ඔබ නව ක්‍රියාකාරිත්වයක් එක් කරන සෑම අවස්ථාවකම කර්මාන්තශාලා, ආයතන, සේවා සහ වටිනාකම් සමඟ තවත් පන්ති පහක් එක් කරයි. මේ ආකාරයේ කේත අවුල් සහගත කේතයට වඩා මන්දගාමී වන බව මට හැඟේ.

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

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

කරුණාකර පැහැදිලි කරන්න. අපට මෙම ඩීඩීඩී විලාසය සහ රටා ගොඩක් අවශ්‍ය ඇයි?

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


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

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

87
"ඔව්, මෙය අවුල් සහගත විය හැකි නමුත් එය වඩා නඩත්තු කළ හැකි සහ කියවිය හැකි ය." එහි අවුල් සහගත නම්, එය කියවිය හැකි සහ නඩත්තු කළ හැක්කේ කෙසේද?
පොලිග්නොම්

37
Ol පොලිග්නොම්: මම හරියටම එකම අදහස ටයිප් කිරීමට සූදානම්ව සිටියෙමි. කනිෂ් develop සංවර්ධකයින්ගේ තවත් තේරීමක් අදහස් දැක්වීමේ ලක්ෂණය වන්නේ "මේ ආකාරයේ කේතයන් මන්දගාමී හා අවුල් සහගත කේතයක් ගමන් කරන බවක් මට හැඟේ." ඔබේ කාලයෙන් අඩක් බිත්තිවලට දුවන්නේ නම් ඔබට හැකි තරම් වේගයෙන් ධාවනය කිරීම හොඳ නැත! මන්දගාමී සිනිඳුයි, සිනිඳුයි වේගවත්.
එරික් ලිපර්ට්

41
ඔබ ජාවා කරන්නේ නැත්නම්. ඔබ සතුව ඇති සියල්ල ජාවා වන විට, සියල්ල පන්තියක් සේ පෙනේ.
හොබ්ස්

Answers:


339

මෙය ප්‍රශස්තිකරණ ගැටළුවකි

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

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

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

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

සංකීර්ණත්වය පැමිණෙන්නේ මූලද්‍රව්‍යවලින් නොව සම්බන්ධතාවයන්ගෙන් ය

ඔබේ විශ්ලේෂණයේ දී ඔබ ප්‍රමාණයන් - කේත ප්‍රමාණය, පන්ති ගණන යනාදිය දෙස බලන බව මම දනිමි. මේවා සිත්ගන්නා සුළු වුවත්, සැබෑ බලපෑම පැමිණෙන්නේ මූලද්‍රව්‍ය අතර සම්බන්ධතාවයෙන් වන අතර එය ඒකාබද්ධව පුපුරා යයි. නිදසුනක් ලෙස, ඔබට කාර්යයන් 10 ක් තිබේ නම් සහ ඒ මත රඳා පවතින අදහසක් තිබේ නම්, ඔබට කරදර විය යුතු සම්බන්ධතා 90 ක් (පරායත්තතා) තිබේ නම් - එක් එක් කාර්යයන් දහයෙන් එකක් වෙනත් ඕනෑම කාර්යයන් නවයක් මත රඳා පවතී, සහ 9 x 10 = 90. කුමන විචල්‍යයන් කුමන විචල්‍යයන් වෙනස් කරන්නේද යන්න හෝ දත්ත සම්ප්‍රේෂණය වන්නේ කෙසේද යන්න පිළිබඳව ඔබට කිසිදු අදහසක් නොතිබිය හැකිය, එබැවින් කිසියම් විශේෂිත ගැටළුවක් විසඳීමේදී කේත කරුවන්ට කරදර වීමට බොහෝ දේ ඇත. ඊට හාත්පසින්ම වෙනස්ව, ඔබට පන්ති 30 ක් ඇති නමුත් ඒවා දක්ෂ ලෙස සකසා තිබේ නම්, ඔවුන්ට සබඳතා 29 ක් තරම් ප්‍රමාණයක් තිබිය හැකිය, උදා: ඒවා ස්ථර කොට හෝ සිරස්ව තබා තිබේ නම්.

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


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

10
O ජෝන් ජෝන් මෙම පැහැදිලි කිරීම මා මෙතෙක් කියවා ඇති එකක් තේරුම් ගැනීමට හොඳම සහ පහසුම ක්‍රමයයි.
ඇඩ්‍රියානෝ රෙපෙට්ටි

13
හොඳින් ලියා ඇත, නමුත් "එක් වරක් නිර්මාණය කළ නමුත් බොහෝ වාර ගණනක් වෙනස් කිරීම" වැදගත් වන්නේ ඇයි? (සියලු කේතය තුළ සිටී නම් EntityTransformationServiceImpl, ඔබ ඉගෙන කිරීමට බල කෙරී ඇත මුළු දෙයක් ක්රියාත්මක වන ආකාරය ඔබ විසින් අදාල කරුණ නිවැරදි කිරීමට පෙර - එහෙත් උදා දෙයක් හා ආකෘතිය සමග වැරදි නම් Formatterඔබ පමණක් ඉගෙන ගැනීමට අවශ්ය බව පන්තිය හැන්ඩ්ල් එම කොටස ක්රියා ආකාරය . ප්ලස් මාස 3 කට පසු ඔබේම කේතය කියවීම ආගන්තුකයෙකුගේ කේතයක් කියවීම හා සමානයි.) අපෙන් බොහෝ දෙනෙක් මේ ගැන උප ons ානුභාවයෙන් සිතූ බවක් මට හැඟේ, නමුත් එය අත්දැකීම් නිසා විය හැකිය. 100% ක් මේ ගැන විශ්වාස නැත.
ආර්. ෂ්මිට්ස්

17
මම සංයෝජක සඳහා සම්පූර්ණ 10 × 10 = 100 සඳහා යන්නෙමි: එම කාර්යයන් පුනරාවර්තන විය හැකි අතර, විශේෂයෙන් දුර්වල කේතයක, පැහැදිලිවම එසේ නොවේ.
KRyan

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

67

හොඳයි, පළමුවෙන්ම, කියවීමේ හැකියාව සහ නඩත්තු කිරීමේ හැකියාව බොහෝ විට නරඹන්නාගේ ඇසෙහි පවතී.

ඔබට කියවිය හැකි දේ ඔබේ අසල්වැසියාට නොවිය හැකිය.

නඩත්තු කිරීමේ හැකියාව බොහෝ විට සොයාගත හැකි මට්ටමට තල්ලු වේ (කේත පදනමේ හැසිරීමක් හෝ සංකල්පයක් කොතරම් පහසුවෙන් සොයාගත හැකිද යන්න) සහ සොයාගැනීමේ හැකියාව තවත් ආත්මීය දෙයකි.

ඩීඩීඩී

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

  • වසම් සංකල්ප ආයතන හා සමස්ථ ලෙස කේතනය කර ඇත
  • වසම් හැසිරීම ආයතන හෝ වසම් සේවාවන්හි වාසය කරයි
  • සමස්ථ මූලයන් මගින් අනුකූලතාව සහතික කෙරේ
  • නොනැසී පවත්නා ගැටළු හසුරුවනු ලබන්නේ නිධිය විසිනි

මෙම විධිවිධානය වෛෂයිකව නඩත්තු කිරීම පහසු නැත. කෙසේ වෙතත්, ඔවුන් ඩීඩීඩී සන්දර්භයක් තුළ ක්‍රියාත්මක වන බව සියලු දෙනා තේරුම් ගත් විට නඩත්තු කිරීම මැනිය හැකි තරම් පහසුය.

පංතිවල

පංති නඩත්තු කිරීමේ හැකියාව, කියවීමේ හැකියාව, සොයා ගැනීමේ හැකියාව යනාදිය සඳහා උපකාරී වේ ... මන්ද ඒවා ප්‍රසිද්ධ සම්මුතියක් වන බැවිනි.

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

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

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

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

ඔබේ යෙදුම ක්‍රියාත්මක වන ආකාරය ගැන තර්ක කිරීමේදී මෙය සංජානන බර අඩු කරයි. කේත පේළි 600 ක් ඉටු කරන්නේ කුමක් දැයි මතක තබා ගැනීම වෙනුවට, සංරචක 30 ක් අන්තර්ක්‍රියා කරන ආකාරය ගැන ඔබට සිතිය හැකිය .

තවද, එම සංරචක 30 සලකා බැලීමේදී ඔබේ යෙදුමේ ස්ථර 3 ක් විහිදේ , ඔබ බොහෝ විට වරකට දළ වශයෙන් සංරචක 10 ක් ගැන තර්ක කළ යුතුය.

එය කළමනාකරණය කළ හැකි බව පෙනේ.

සාරාංශය

අත්යවශ්යයෙන්ම, ඔබ ජ්යෙෂ් dev ඩෙව්ස් දකින දේ මෙයයි:

ඔවුන් යෙදුම පංති ගැන තර්ක කිරීමට පහසුය .

ඉන්පසු ඔවුන් මේවා ස්ථර ගැන තර්ක කිරීමට පහසු ලෙස සංවිධානය කරයි .

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


5
කුඩා පංති වලට අමතරව ප්රතිස්ථාපනය / ප්රතික්රියාකාරකය පහසුය.
සලමොන්

13
Overengineering කරන්නේ නැහැ ඔබ කියා දේ නොතකා, තරමක් විරුද්ධ - තව නඩත්තු කළහැකි හෝ අවබෝධ කරගත කේතය දෙන්න. AddressServiceRepositoryProxyInjectorResolverඔබට වඩාත් අලංකාර ලෙස ගැටලුව විසඳිය හැකි විට කාටද අවශ්‍ය ? සැලසුම් රටා සඳහා නිර්මාණ රටා අනවශ්‍ය සංකීර්ණතාවයට හා වාචිකභාවයට මඟ පාදයි.
vikingsteve

28
ඔව්, අධික ලෙස මත්පැන් පානය කිරීම නරකයි. බලු පැටවුන් මැරීමත් එසේමයි. මෙහි කිසිවෙකු ඒ වෙනුවෙන් පෙනී සිටින්නේ නැත. logicallyfallacious.com/tools/lp/Bo/LogicalFallacies/169/...
MetaFight

6
එසේම, මෘදුකාංග ඉංජිනේරු සන්දර්භය තුළ "අලංකාරය" බොහෝ විට වීසල් වචනයකි. en.wikipedia.org/wiki/Weasel_word
MetaFight

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

29

කරුණාකර මට පැහැදිලි කරන්න, අපට මෙම ඩීඩීඩී විලාසිතාව අවශ්‍ය වන්නේ ඇයි?

පළමුව, සටහනක්: ඩීඩීඩී හි වැදගත් කොටස රටාවන් නොව, ව්‍යාපාරය සමඟ සංවර්ධන උත්සාහයන් පෙළගැස්වීමයි. ග්‍රෙග් යන්ග් සඳහන් කළේ නිල් පොතේ පරිච්ඡේද වැරදි පිළිවෙලට ඇති බවයි.

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

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

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

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

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

සාධාරණ ලෙස: එයින් සමහරක් වස්තු දිශානත මොළයේ හානිය ද වේ. එවාන්ස් විසින් මුලින් විස්තර කරන ලද රටා පදනම් වී ඇත්තේ ඔහු මීට වසර 15+ කට පෙර සහභාගී වූ ජාවා ව්‍යාපෘති මත ය; තත්වය සහ හැසිරීම එම ශෛලිය තුළ තදින් බැඳී ඇති අතර එමඟින් ඔබ වළක්වා ගැනීමට කැමති විය හැකි සංකූලතා ඇති වේ; බලන්න අවබෝධය හා ක්රියාකාරී ස්ටුවර්ට් Halloway, හෝ විසින් Inlining සංග්රහයේ ජෝන් Carmack විසින්.

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


2
මෙය කියවන තෙක් මම මගේම පිළිතුරක් එක් කිරීමට ගියෙමි. පළමු ඡේදය මම අවධාරණය කරමි, මෘදුකාංගය ව්‍යාපාරික අවශ්‍යතා සමඟ මෘදුකාංග පෙළගැස්වීම සඳහා මෘදුකාංග තුළ ව්‍යාපාරික සංකල්ප ආකෘතිකරණය කිරීම මෙහි අරමුණ බව. සාධාරණ ලෙස, ව්‍යාපෘතිය මෙහෙයවන විශ්ලේෂකයා විසින් භාරදීමට ගතවන කාලය කොපමණ දැයි ප්‍රකාශ කළ යුතු අතර කේත / පරීක්ෂණ ගුණාත්මකභාවය හෝ සම්පූර්ණත්වය ඒ අනුව සකස් කළ යුතුය.
සෙන්ටිනල්

1
ජෝන් කාර්මාක් IMO සඳහා කදිම නිදසුනකි, මන්ද ඔහු පිරිසිදු හා තේරුම් ගැනීමට පහසු කේත ලිවීමට ප්‍රසිද්ධියක් උසුලයි. දියුණු කේතයන් සමඟ ඔහුගේ කේතය නිරීක්ෂණය කරන විට මෙය විශේෂයෙන් දැකිය හැකිය - වඩා හොඳ CPU සහ මතකය සමඟ, “මෙය සැබවින්ම වෙහෙසකර විය යුතුය” සිට “මෙය සැබවින්ම පැහැදිලි / හුදකලා විය යුතුය / ... ". මා දන්නා වඩාත්ම ප්‍රායෝගික ක්‍රමලේඛකයෙක් :)
Luaan

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

29

අනෙක් පිළිතුරු වල හොඳ කරුණු බොහොමයක් ඇත, නමුත් ඔබ සිතන වැදගත් සංකල්පීය වැරැද්දක් ඔවුන් අතපසු කර හෝ අවධාරණය නොකරයි:

ඔබ සම්පූර්ණ වැඩසටහන තේරුම් ගැනීමට දරන උත්සාහය සංසන්දනය කරයි.

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

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

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

මම ක්‍රම දෙකෙහිම වැඩ කර ඇත්තෙමි. සැසඳිය හැකි කාර්යයන් සහ සැසඳිය හැකි පද්ධති ප්‍රමාණය සඳහා කාර්ය සාධනයෙහි විශාලත්වයේ ඇණවුම් දෙකක් වෙනස පහසුවෙන් විය හැකිය.

මෙය වෙනත් ක්‍රියාකාරකම් කෙරෙහි ඇති කරන බලපෑම:

  • කුඩා ඒකක සමඟ පරීක්ෂා කිරීම වඩාත් පහසු වේ
  • සංවර්ධකයින් දෙදෙනෙකුට එකම කේත කැබැල්ලක වැඩ කිරීමේ අවස්ථා කුඩා බැවින් ඒකාබද්ධ කිරීමේ ගැටුම් අඩුය.
  • අඩු අනුපිටපත් නිසා කෑලි නැවත භාවිතා කිරීම පහසුය (සහ මුලින් කෑලි සොයා ගැනීම).

19

කේතය ලිවීමට වඩා පරීක්ෂණ කේතය දුෂ්කර නිසා

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

කෙසේ වෙතත්, සලකා බැලිය යුතු තවත් පැතිකඩක් ඇත - පරීක්ෂා කිරීම කළ හැක්කේ ඔබේ මුල් කේතය ලෙස පමණි.

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

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

විසඳුම: එක් එක් විශේෂිත, විභව අසාර්ථකත්වය පෙන්නුම් කරන බොහෝ කුඩා පරීක්ෂණ.

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

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

පැත්තක සටහනක් ලෙස: මෙයින් අදහස් කරන්නේ මිනිසුන් දේවල් "බොහෝ දුරට" නොගන්නා බවයි. නමුත් කේත පදනම් කුඩා / අඩු සම්බන්ධිත කොටස් වලට වෙන් කිරීමට නීත්‍යානුකූල හේතුවක් තිබේ - බුද්ධිමත්ව සිදු කළ හොත්.


5
ඔබේ පිළිතුර ආමන්ත්‍රණය කරන්නේ පරීක්ෂණ සහ පරීක්ෂණ හැකියාව පමණක් වන අතර අනෙක් පිළිතුරු සමහරක් නොසලකා හරින ලද වැදගත්ම කාරණය එයයි +1.
skomisa

17

කරුණාකර මට පැහැදිලි කරන්න, අපට මෙම ඩීඩීඩී විලාසිතාව අවශ්‍ය වන්නේ ඇයි?

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

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

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

ඔබ කියවූ දේවලින් සමහරක් ඔබට භාවිතා කළ හැකි නමුත් මුලින් “ලබා නොගත්” හෝ සමහර විට එසේ නොවූ බව ඔබ සොයා ගන්නා කාලයක් පැමිණිය හැකිය.


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

9
EtPeteKirkham OPs උභතෝකෝටිකය යනු මෝස්තර රටා අධික ලෙස භාවිතා කිරීමයි. ඔබට සැබවින්ම අවශ්‍යද AccountServiceFacadeInjectResolver(වැඩ කරන පද්ධතියක මා සොයාගත් සැබෑ උදාහරණය) - පිළිතුර බොහෝ විට නැත.
vikingsteve

4
@vikingsteve OP යනු සැලසුම් රටාවන්හි සාමාන්‍ය භාවිතය පිළිබඳව අදහස් දක්වන ක්‍රමලේඛන ගුරු නොවේ. OP යනු ආධුනිකයෙකු වන අතර ඔවුන් සිතන්නේ ඔහුගේ සාප්පුව තුළ ඔවුන් අධික ලෙස භාවිතා කර ඇති බවයි. මේ දිනවල මම ලියන කේතය ගැන ආරම්භකයා-මාත් ඒ හා සමානව සිතනු ඇති බව මම දනිමි, නමුත් ආරම්භකයා-මට පෞද්ගලික ව්‍යාපෘති රාශියක් අසාර්ථක විය.
ආර්. ෂ්මිට්ස්

4
S ආර්. ඒවා නිසි ලෙස වටහාගෙන නිසි ලෙස භාවිතා කළ යුතු අතර, ඉස්කුරුප්පු ඇරීමේදී දුර්වල යැයි ඔබට මිටිය දොස් පැවරිය නොහැක. පුදුමයට කරුණක් නම්, මෙම සරල දෙය තේරුම් ගැනීමට විශාල අවබෝධයක් හා අත්දැකීමක් අවශ්‍ය බව පෙනේ :)
Luaan

3
ULuaan ඔබ දැනටමත් හොඳින් සැලසුම් කර ඇති, සංවිධානාත්මක, ව්‍යුහාත්මක, OOP ගැන සැලකිලිමත් වී ඇත්නම්, මම එම ආරම්භකයා යැයි නොකියමි, නමුත් ඔව් අධික ලෙස භාවිතා කිරීම නරක ය. කෙසේ වෙතත්, ප්‍රශ්නය වන්නේ ඒවා විසඳන්නේ කුමන ගැටලුද යන්න OP හට නොතේරෙන්නේ කෙසේද යන්නයි. ඔබ හේතුව නොදන්නේ නම්, හේතුවක් නොමැති බව පෙනේ - නමුත් ඇත්ත වශයෙන්ම, ඔබ එය තවමත් දන්නේ නැත.
ආර්. ෂ්මිට්ස්

8

ඔබගේ ප්‍රශ්නය බොහෝ උපකල්පන සහිතව, බොහෝ කරුණු ආවරණය වන හෙයින්, මම ඔබේ ප්‍රශ්නයේ මාතෘකාව හුදකලා කරමි:

නිර්මාණ රටාවන්හි අපට මෙතරම් පන්ති අවශ්‍ය වන්නේ ඇයි?

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

කේතය දැමිය යුත්තේ කොතැනද, සහ ඔබේ කාර්යයන් විවිධ කේත ඒකක වලට කපා ගන්නේ කෙසේද යන්න තීරණය කිරීම සඳහා ප්‍රධාන මාර්ගෝපදේශ දෙකක් තිබේ:

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

ඒ දෙක වැදගත් විය යුත්තේ ඇයි?

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

මෙම අංශ දෙක වන්නේ ඕනෑම ක්‍රමලේඛන භාෂාවක “කුමක් දැමිය යුතුද” යන්න තෝරා ගැනීම සඳහා වන “ධාවක” සහ ඕනෑම ආදර්ශයක් (OO පමණක් නොවේ). සෑම කෙනෙකුම ඔවුන් ගැන පැහැදිලිව නොදන්නා අතර, මෙම බලපෑම් මෘදුකාංග කෙරෙහි බලපාන ආකාරය පිළිබඳ සැබවින්ම මුල් බැසගත් ස්වයංක්‍රීය හැඟීමක් ලබා ගැනීමට බොහෝ විට වසර ගණනාවක් ගත වේ.

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

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

සමහර අය සරලව එසේ ක්‍රියා නොකරයි. වඩාත් සාමාන්‍යයෙන් භාවිතා කළ හැකි ඕනෑම දෙයක් සඳහා ඔවුන් අතුරුමුහුණත් (හෝ, වඩාත් සාමාන්‍යයෙන් වියුක්ත පාදක පන්ති) නිර්මාණය කරයි; මෙය ඉක්මනින් පන්ති පිපිරීමක් ඇති කරයි.

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

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


7

පළපුරුදු කේත රචකයන් ඉගෙන ගෙන ඇත:

  • මන්ද එම කුඩා වැඩසටහන් සහ ගැටුම් වර්ධනය වීමට පටන් ගනී, විශේෂයෙන් සාර්ථක ඒවාය. සරල මට්ටමින් වැඩ කළ සරල රටා පරිමාණය නොකරයි.
  • සෑම එකතු කිරීමක් / වෙනස් කිරීමක් සඳහාම කෞතුක වස්තු කිහිපයක් එකතු කිරීම / වෙනස් කිරීම බරක් ලෙස පෙනෙන්නට ඇති නමුත් එකතු කළ යුතු දේ ඔබ දන්නා අතර එසේ කිරීම පහසුය. මිනිත්තු 3 ක් යතුරු ලියනය කිරීමෙන් පැය 3 ක් දක්ෂ කේතීකරණයක් ලැබේ.
  • කුඩා පංති ගොඩක් "අවුල් සහගත" නොවන්නේ උඩිස් ඇත්ත වශයෙන්ම හොඳ අදහසක් වන්නේ මන්දැයි ඔබට නොතේරෙන බැවිනි
  • වසම් දැනුම එකතු නොකර, 'මට පැහැදිලිව පෙනෙන' කේතය බොහෝ විට මගේ කණ්ඩායම් සගයන්ට අභිරහස් ය ... අනාගත අනාගතය.
  • ගෝත්‍රික දැනුමෙන් කණ්ඩායම් සාමාජිකයින් පහසුවෙන් හා tive ලදායී වීමට පහසුවෙන් හා අමාරුවෙන් එකතු කිරීමට ව්‍යාපෘති ඇදහිය නොහැකි තරම් දුෂ්කර කළ හැකිය.
  • පරිගණකකරණයේ ඇති දුෂ්කර ගැටළු දෙකෙන් එකක් නම් කිරීම තවමත් සත්‍යයක් වන අතර බොහෝ පන්ති හා ක්‍රම බොහෝ විට නම් කිරීමේ දැඩි ව්‍යායාමයක් වන අතර එය බොහෝ දෙනෙකුට විශාල වාසියක් බව පෙනේ.

5
නමුත් පොදු කාර්ය අවශ්‍යද? මා දකින බොහෝ අවස්ථාවන්හිදී, මෝස්තර රටා අධික ලෙස භාවිතා වේ. ඕනෑවට වඩා සංකීර්ණ වීමේ ප්‍රති result ලය වන්නේ කේතය අවබෝධ කර ගැනීම, නඩත්තු කිරීම, පරීක්ෂා කිරීම සහ නිදොස් කිරීම ය. ඔබට එක් සරල සේවා පන්තියක් වටා පන්ති 12 ක් සහ මේවන් මොඩියුල 4 ක් ඇති විට (මා දුටු සැබෑ උදාහරණයක්), එය ඔබ සිතනවාට වඩා ඉක්මනින් කළමනාකරණය කළ නොහැකි වනු ඇත.
vikingsteve

4
@vikingsteve ව්‍යුහාත්මක කේතය පොදුවේ නරක අදහසක් බව එය සනාථ කරනු ඇතැයි යන බලාපොරොත්තුවෙන් දෝෂ සහිත ක්‍රියාත්මක කිරීමක එක් උදාහරණයක් ගැන ඔබ දිගටම සඳහන් කරයි. එය ලුහුබඳින්නේ නැත.
මෙටා ෆයිට්

3
Et මෙටා ෆයිට් ඕපී ව්‍යුහ කේතය ගැන කතා නොකරයි. ඔහු කතා කරන්නේ, ඔහු දකින දේ, බොහෝ වියුක්තයන් ගැන ය. ඔබට බොහෝ වියුක්තයන් තිබේ නම්, මම තර්ක කරන්නේ, ඔබට ඉතා ව්‍යුහාත්මක නොවන කේතයක් හා බොහෝ දුරට සමාන කොටස් ලැබෙනු ඇත, මන්ද මිනිසුන්ට ඔවුන් සමඟ ගනුදෙනු කිරීමට ඇති දේවල් ප්‍රමාණය සමඟ කටයුතු කළ නොහැකි බැවිනි.
සහ වගවීම

4
ව්‍යුහගත කේත උපකල්පිත ලෙස වැරදි ලෙස භාවිතා කිරීම නරක දෙයක් බව මෙහි සිටින සියල්ලන්ම එකඟ බව මට විශ්වාසයි. OP කියනවා ඔවුන් කනිෂ් are කියලා. ව්‍යුහාත්මක කේතයේ ප්‍රතිලාභ ගැන ඔහු / ඇය නුහුරු යැයි මිනිසුන් උපකල්පනය කරන්නේ එබැවිනි.
මෙටා ෆයිට්

2

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

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

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


1

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

නිර්මාණ රටාවන්හි අපට මෙතරම් පන්ති අවශ්‍ය වන්නේ ඇයි?

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

පහත දැක්වෙන්නේ ප්‍රශ්නයට directly ජුව කථා කරන පොතේ උපුටා ගැනීම් ය.

පොතේ මෙම උපුටා ගැනීම 3 වන පරිච්ඡේදයේ “රටා” සහ 3 වන පරිච්ඡේදයේ “රටාවක් ක්‍රියාත්මක කිරීමට බොහෝ ක්‍රම තිබේ”:

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

සංයුක්ත රටාව සඳහා ව්‍යුහ සටහන

සංයුක්ත රටාව විශේෂයෙන් ක්‍රියාත්මක කිරීම මෙන්න:

සංයුක්ත රටාව අවම වශයෙන් ක්‍රියාත්මක කිරීම

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

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

මඳක් කලින් උප පරිච්ඡේදයේ යෝෂුවා මෙසේ පවසයි.

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

මෙන්න තව ටිකක් විස්තරාත්මකව යන සම්පූර්ණ කොටස:

පිටු තිරය ජෝෂුවා කෙරෙව්ස්කි පොතේ "රටාවන්ට ප්‍රතිනිර්මාණය කිරීම" කින්ඩල් සංස්කරණය, 13%, ස්ථානය 1134 9053


[මුල් සටහන]

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

රූප විස්තරය මෙහි ඇතුළත් කරන්න

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

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

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

පටුන ජෝෂුවා කෙරෙව්ස්කි විසින් රටාවන්ට පොත් ප්‍රතිනිර්මාණය කිරීමේ තිර රුව

මෙම පටුනෙන් මම විශේෂයෙන් අවධාරණය කරන්නේ:

  • මම පහත කරුණු අවධාරණය කරමි:
  • අධි ඉංජිනේරු
  • රටා පැනසියා
  • අඩු ඉංජිනේරු
  • මානව කියවිය හැකි කේතය
  • එය පිරිසිදුව තබා ගැනීම
  • රටා සතුටුයි
  • රටාවක් ක්‍රියාත්මක කිරීමට බොහෝ ක්‍රම තිබේ
  • රටාවන් වෙත, දෙසට සහ away ත්ව ප්‍රතික්‍රියා කිරීම
  • රටා කේතය වඩාත් සංකීර්ණ කරයිද?
  • කේත සුවඳ

එබැවින්, ඔබේ ප්‍රශ්නය අභ්‍යන්තර ප්‍රශ්න කිරීමේ අර්ථයක් ලෙස අර්ථ දැක්විය හැකි යැයි මම සිතමි. "රටා ක්‍රියාත්මක කිරීම සඳහා අපට බොහෝ පන්ති භාවිතා කළ යුතුද?" පිළිතුර “සමහර විට” වන අතර, ඇත්ත වශයෙන්ම, පෙනෙන පරිදි එය “රඳා පවතී”. නමුත් ඔබට පිළිතුරු දීමට තවත් පොතක් අවශ්‍ය වේ, එබැවින් ඔබට හැකි නම් මෙය ලබා ගන්නා ලෙස මම නිර්දේශ කරමි. (ඇත්ත වශයෙන්ම මා සතුව මේ මොහොතේ එය මා සතුව නොමැත, එසේ නොමැතිනම් මම ඔබට එයින් හොඳ උදාහරණයක් දෙන්නෙමි - සමාවෙන්න.) එච්.ටී.එච්.


එබැවින් මූලික වශයෙන්, ඔබේ පිළිතුර "මෙම පොත කියවා ඔබට එය ලැබෙනු ඇත" යන්නයි. කොහොමද (දසලක්ෂයක් සමග ගෑවිලාවත් නැත වූ) refactoring ගැන පොතක් කියවනවා විශ්රාම වැටුප් තේරුම් ගැනීමට උපකාර කළ හැකි "ඇයි LOC නඩත්තු නැතහොත් හා ඇයි දසලක්ෂයක් අවශ්ය හා වෘත්තීය දැමීම්, මොනවාද වියදම මැනීමට අප්රසන්න දර්ශකයක්?"
ලයිව්

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

-4

භාවිතයට අනුව වැඩි පංතියක් හා ක්‍රියාකාරීත්වයක් ඇති කිරීම අනාගතයේ දී ඕනෑම ගැටළුවක් විසඳීමට උපකාරී වන නිශ්චිත ආකාරයකින් ගැටලු විසඳීමට හොඳ ප්‍රවේශයක් වනු ඇත.

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

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


9
කණගාටුයි, නමුත් ඔබ කියන්නේ කුමක්ද?
අඩුකිරීමේ

Ed ඩෙඩප්ලිකේටර් අපි ජාවාහි උදාහරණයක් ගනිමු නම් අපි ඔවුන්ගේ උරුමය සඳහා jframes නූල් සහ පන්ති භාවිතා කළෙමු. එක් පන්තියකින් පමණක් අපට නිර්මාණ සඳහා ජාවා කෘති කිහිපයක් භාවිතා කළ නොහැක, එබැවින් අපට තවත් පන්ති කළ යුතුය
සංජීව් චෞහාන්

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