ඇමතුම් දාමයේ මට්ටම් කිහිපයක් ගැඹුරින් පමණක් භාවිතා වන පරාමිතීන් පසු කිරීමේ (ප්‍රති-විරෝධී) රටාවට නමක් තිබේද?


213

මම උත්සාහ කළේ යම්කිසි උරුම කේතයක ගෝලීය විචල්‍යය භාවිතා කිරීමට විකල්ප සොයා ගැනීමට ය. නමුත් මෙම ප්‍රශ්නය තාක්ෂණික විකල්පයන් ගැන නොවේ, මම ප්‍රධාන වශයෙන් සැලකිලිමත් වන්නේ පාරිභාෂිතය ගැන ය .

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

higherlevel(newParam)->level1(newParam)->level2(newParam)->level3(newParam)

එහිදී newParamමගේ උදාහරණයක් ගෝලීය විචල්ය මීට පෙර, නමුත් එය වෙනුවට පෙර hardcoded අගය විය හැකිව තිබුණි. කාරණය වන්නේ දැන් නව පරම් හි වටිනාකම ලබාගෙන ඇති higherlevel()අතර ඒ සඳහා “ගමන්” කළ යුතුය level3().

මම කල්පනා කරමින් සිටියේ මේ ආකාරයේ තත්වයක් / රටාවක් සඳහා නමක් (ය) තිබේ නම්, ඔබට බොහෝ කාර්යයන් සඳහා පරාමිතියක් එක් කළ යුතු අතර එය නවීකරණය නොකළ අගය “සමත්” කරයි.

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


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

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

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

7
එය හොඳ රටාවක් / ප්‍රති-රටාවක් / සංකල්පයක් / විසඳුමක් ද යන්න පිළිබඳ සාකච්ඡාව මම අගය කළත්, මට දැන ගැනීමට අවශ්‍ය වූයේ ඒ සඳහා නමක් තිබේ නම්.
ecerulm

3
ඇමතුම් තොගය පුරාම ජලනල රේඛාවක් පහත හෙලන්නාක් මෙන් එය පොදුවේ නූල් ගැසීම ලෙසද ජලනල කාර්මික ශිල්පය ලෙසද මා අසා ඇත.
wchargin

Answers:


207

දත්ත ම “ට්‍රම්ප් දත්ත” ලෙස හැඳින්වේ . එය "කේත සුවඳක්" වන අතර එයින් ඇඟවෙන්නේ එක් කේත කැබැල්ලක් තවත් කේත කැබැල්ලක් සමඟ දුරින් අතරමැදියන් හරහා සන්නිවේදනය කරන බවයි.

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

ගෝලීය විචල්‍යයන් ඉවත් කිරීම සඳහා ප්‍රතිනිර්මාණය කිරීම දුෂ්කර වන අතර ට්‍රම්ප් දත්ත එසේ කිරීමේ එක් ක්‍රමයක් වන අතර බොහෝ විට ලාභම ක්‍රමය වේ. එහි පිරිවැය ඇත.


75
"ට්‍රම්ප් දත්ත" සෙවීමෙන් මගේ සෆාරි දායකත්වයේ "කේත සම්පූර්ණ" පොත සොයා ගැනීමට මට හැකි විය. පොතේ "ගෝලීය දත්ත භාවිතා කිරීමට හේතු" නමින් කොටසක් ඇති අතර එයට එක් හේතුවක් වන්නේ "ගෝලීය දත්ත භාවිතා කිරීමෙන් ට්‍රම්ප් දත්ත ඉවත් කළ හැකිය" යන්නයි. :). "ට්‍රම්ප් දත්ත" මගින් ගෝලීයයන් සමඟ ගනුදෙනු කිරීම පිළිබඳ තවත් සාහිත්‍යයක් සොයා ගැනීමට මට හැකි වනු ඇතැයි මට හැඟේ. ස්තූතියි!
ecerulm

9
Im ජිමී ජේම්ස්, එම කාර්යයන් ඇත්තෙන්ම දේවල් කරයි. කලින් ගෝලීය වූ විශේෂිත නව පරාමිතිය සමඟ පමණක් නොවේ.
ecerulm

179
වසර 20 ක ක්‍රමලේඛනයක දී, මම මෙම පදය මීට පෙර කිසි දිනෙක අසා නැත. මම පිළිතුර ගැන පැමිණිලි නොකරමි, මෙම පදය එතරම් පුළුල් ලෙස භාවිතා නොවන / දන්නා දෙයක් නොවන බව යෝජනා කිරීම. සමහර විට ඒ මම විතරයි.
ඩෙරෙක් එල්කින්ස් SE

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

7
රොබින්සන් එතරම් නොවේ. උදාහරණයක් ලෙස, ඔබේ පින්තූර ලිවීමේ කේතය% AppData% ස්පර්ශ කිරීමට ඔබට ඇත්තටම අවශ්‍යද, නැතිනම් ලිවිය යුත්තේ කොතැනටද යන්න තර්කයක් ගත යුතුද? ගෝලීය රාජ්‍යය සහ තර්කයක් අතර වෙනස එයයි. “පරිසරය” පහසුවෙන් එන්නත් කළ හැකි යැපීමක් විය හැකි අතර එය ඉදිරිපත් කරන්නේ පරිසරය සමඟ අන්තර් ක්‍රියා කිරීමට වගකිව යුතු අය සඳහා පමණි. ජීඩීඅයි + බුරුසු යනාදිය වඩාත් සාධාරණ ය, නමුත් එය ඇත්ත වශයෙන්ම ඔබට කළ නොහැකි පරිසරයක සම්පත් කළමනාකරණයේ අවස්ථාවකි - යටින් පවතින ඒපීඅයි සහ / හෝ ඔබේ භාෂාව / පුස්තකාල / ධාවන කාලවල අඩුපාඩුවක්.
Luaan

102

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

උදාහරණයක් ලෙස, කැලැන්ඩර දින දෙකක් අතර දින ගණන ගණනය කිරීමට අවශ්‍ය යැයි කියමු, එවිට මම ශ්‍රිතයක් නිර්මාණය කරමි:

int daysBetween(Day a, Day b)

මෙය සිදු කිරීම සඳහා, මම නව කාර්යයක් නිර්මාණය කරමි:

int daysSinceEpoch(Day day)

එවිට මගේ පළමු කාර්යය සරලව සිදු වේ:

int daysBetween(Day a, Day b)
{
    return daysSinceEpoch(b) - daysSinceEpoch(a);
}

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

මම නිර්දේශ කරන්නේ එක් එක් ශ්‍රිතය දෙස බලා ප්‍රශ්න කිහිපයකින් ආරම්භ කිරීමයි:

  • මෙම ශ්‍රිතයට පැහැදිලි හා ඉලක්කගත ඉලක්කයක් තිබේද? නැතහොත් එය “සමහර දේවල් කරන්න” ක්‍රමයක්ද? සාමාන්‍යයෙන් ශ්‍රිතයේ නම මෙහි උපකාරී වන අතර එහි නම විස්තර කර නොමැති දේවල් තිබේ නම් එය රතු ධජයකි.
  • පරාමිතීන් ඕනෑවට වඩා තිබේද? සමහර විට ක්‍රමයකට නීත්‍යානුකූලව බොහෝ ආදාන අවශ්‍ය විය හැකි නමුත් බොහෝ පරාමිතීන් තිබීම එය භාවිතා කිරීම හෝ තේරුම් ගැනීම බරක් කරයි.

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

ඔබට පරාමිතීන් ඕනෑවට වඩා තිබේ නම්, වස්තු ප්‍රතිනිර්මාණය කිරීමේ ක්‍රමය සලකා බලන්න .


2
හොඳයි, මම (විරෝධී) සමඟ මතභේදාත්මක වීමට අදහස් නොකළෙමි. නමුත් බොහෝ ක්‍රියාකාරී අත්සන් යාවත්කාලීන කිරීමේ “තත්වය” සඳහා නමක් තිබේදැයි මම තවමත් කල්පනා කරමි. මම හිතන්නේ ප්‍රති-රටාවකට වඩා “කේත සුවඳක්” ඇති බවයි. ගෝලීයයක් තුරන් කිරීම සඳහා පහසුකම් 6 ක් අත්සන් යාවත්කාලීන කළ යුතු නම්, මෙම උරුම කේතයෙහි යමක් නිවැරදි කළ යුතු බව එය මට කියයි. නමුත් පරාමිතීන් සම්මත කිරීම සාමාන්‍යයෙන් හරි යැයි මම සිතමි, සහ යටින් පවතින ගැටලුව විසඳා ගන්නේ කෙසේද යන්න පිළිබඳ උපදෙස් මම අගය කරමි.
ecerulm

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

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

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

@ecerulm එය ඔබට කියනුයේ යම් දෙයක් සවි කළ යුතු බවය - දැන් එය ගෝලීය විචල්‍යයක් වූ කාලයට වඩා යමක් සවි කළ යුතු බව පැහැදිලිය.
user253751

61

මෙම ( ප්‍රති- විරෝධී) රටාව “ ට්‍රම්ප් දත්ත ” ලෙස හැඳින්වෙන බව බොබ් ඩල්ග්ලීෂ් දැනටමත් සටහන් කර ඇත .

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

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

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

playerName = "Bob"
playerEyeColor = GREEN
playerXPosition = -8
playerYPosition = 136
playerHealth = 100
playerMaxHealth = 100

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

mainGameLoop()
 -> processInputEvent()
     -> doPlayerAction()
         -> movePlayer()
             -> checkCollision()
                 -> interactWithNPC()
                     -> interactWithShopkeeper()

... සහ interactWithShopkeeper()ශ්‍රිතයට සාප්පු හිමියා විසින් ක්‍රීඩකයාගේ නම සඳහන් කර ඇත, එබැවින් ඔබට දැන් හදිසියේම එම සියලු කාර්යයන් playerNameහරහා ට්‍රම්ප් දත්ත ලෙස යැවිය යුතුය . ඇත්ත වශයෙන්ම, සාප්පු හිමියා නිල් ඇස් ඇති ක්‍රීඩකයින් අ ï ාන යැයි සිතන්නේ නම් සහ ඔවුන් සඳහා වැඩි මිලක් අය කරනු ඇත නම්, එවිට ඔබට සම්පූර්ණ ක්‍රියාකාරකම් දාමය හරහා යාමට අවශ්‍ය වනු ඇත.playerEyeColor

මෙම නිසි විසඳුමක්, මේ අවස්ථාවේ දී, නම, ඇසේ වර්ණය, තත්වය, සෞඛ්ය සහ ක්රීඩකයා චරිතය වෙනත් කිසිම ගුණ encapsulates බව ක්රීඩකයා වස්තුව නිර්වචනය කිරීමට ඇත්තෙන්ම වේ. ඒ ආකාරයෙන්, ඔබට අවශ්‍ය වන්නේ එම තනි වස්තුව කෙසේ හෝ ක්‍රීඩකයා සම්බන්ධ වන සියලුම කාර්යයන් වෙත යොමු කිරීමයි.

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

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

ඒ වෙනුවට, විසඳුම වන්නේ වස්තූන් සමඟ ස්ථිර හෝ තාවකාලික සම්බන්ධතා ඇති වෙනත් වස්තූන් වෙත යොමු කිරීම් ගබඩා කිරීමයි. උදාහරණයක් ලෙස, ක්‍රීඩක වස්තුව (සහ බොහෝ විට ඕනෑම එන්පීසී වස්තූන් ද) බොහෝ විට “ක්‍රීඩා ලෝකය” වස්තුව වෙත යොමු කිරීමක් ගබඩා කළ යුතු අතර, එය වත්මන් මට්ටම / සිතියම පිළිබඳ සඳහනක් ඇති බැවින් එවැනි ක්‍රමයක් player.moveTo(x, y)අවශ්‍ය නොවේ. පරාමිතියක් ලෙස සිතියම පැහැදිලිව ලබා දෙන්න.

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

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


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

6
Im ජිමී ජේම්ස්: බහුමාපකය පිළිබඳ ඔබේ අදහස හොඳ එකක් වන අතර, මම එය තනිවම සෑදීමට සිතුවෙමි, නමුත් පිළිතුර තව දුරටත් ලබා නොගැනීම සඳහා එය අතහැර දැමුවෙමි. තනිකරම දත්ත අනුව අතර කුඩා වෙනසක් තියෙනවා ගලා අතර මම කරන්න (සමහර විට ඉතා දුර්වල ලෙස) උත්සාහ කළ අවස්ථාවේදී, එම නිසා foo.method(bar, baz)හා method(foo, bar, baz)හිටපු කැමති වෙනත් හේතු (ආදිය බහුරූපතාව, encapsulation, ප්රදේශවාසීන්ට, ඇතුළුව) වේ.
ඉල්මාරි කරොනන්

LIlmaariKaronen: අනාගතයේ සිදුවන ඕනෑම වෙනස්කමක් / එකතු කිරීම් / මකාදැමීම් / ප්‍රතික්‍රියාකාරක වලින් ක්‍රියාකාරී මූලාකෘති අනාගතයෙන් සනාථ කරන ඉතා පැහැදිලි වාසිය (උදා: playerAge). මෙය පමණක් මිල කළ නොහැකි ය.
smci

35

මේ සඳහා නිශ්චිත නමක් ගැන මම නොදනිමි, නමුත් ඔබ විස්තර කරන ගැටලුව එවැනි පරාමිතියක විෂය පථය සඳහා හොඳම සම්මුතියක් සොයා ගැනීමේ ගැටලුව පමණක් බව සඳහන් කිරීම වටී යැයි මම සිතමි.

  • ගෝලීය විචල්‍යයක් ලෙස, වැඩසටහන යම් ප්‍රමාණයකට ළඟා වූ විට විෂය පථය ඉතා විශාලය

  • තනිකරම දේශීය පරාමිතියක් ලෙස, ඇමතුම් දාමයන්හි පුනරාවර්තන පරාමිති ලැයිස්තු රාශියකට මඟ පෙන්වන විට විෂය පථය ඉතා කුඩා විය හැකිය.

  • වෙළඳාමක් ලෙස, ඔබට බොහෝ විට එවැනි පරාමිතීන් පන්ති එකක හෝ වැඩි ගණනක සාමාජික විචල්‍යයක් බවට පත් කළ හැකිය, එය මම නිසි පන්ති නිර්මාණය ලෙස හඳුන්වන්නෙමි .


10
නිසි පන්ති සැලසුම් සඳහා +1. මෙය OO විසඳුමක් බලාපොරොත්තුවෙන් සිටින සම්භාව්‍ය ගැටලුවක් සේ පෙනේ.
l0b0

21

මම විශ්වාස කරන්නේ ඔබ විස්තර කරන රටාව හරියටම පරායත්ත එන්නත් කිරීමයි. Commenters කිහිපයක් මේ බව තර්ක කර ඇති රටාව , ක්රියාත්මක නොකළ ප්රති-රටාව , සහ මම එකඟ නැඹුරු වනු ඇත.

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

Sandwich make_sandwich() {
    PeanutButter pb = get_peanut_butter();
    Jelly j = get_jelly();
    return pb + j;
}
extern PhysicalRefrigerator g_refrigerator;
PeanutButter get_peanut_butter() {
    return g_refrigerator.get("peanut butter");
}
Jelly get_jelly() {
    return g_refrigerator.get("jelly");
}

නමුත් යැපුම් එන්නත් කිරීම හා ඒ වෙනුවට මේ ආකාරයට ලිවීම වඩා හොඳ පුරුද්දකි :

Sandwich make_sandwich(Refrigerator& r) {
    PeanutButter pb = get_peanut_butter(r);
    Jelly j = get_jelly(r);
    return pb + j;
}
PeanutButter get_peanut_butter(Refrigerator& r) {
    return r.get("peanut butter");
}
Jelly get_jelly(Refrigerator& r) {
    return r.get("jelly");
}

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

ප්‍රසාද දීමනාවක් ලෙස, ඔබ ඔබේ පන්ති ධූරාවලිය නිවැරදිව කළහොත්, පෙති කැපීමෙන් වළකින්න, සහ එසේ නම්, ඔබට make_sandwichසමත් වීමෙන් ශ්‍රිතය ඒකක පරීක්ෂාවට ලක් කළ හැකිය MockRefrigerator! (ඔබේ ඒකක-පරීක්ෂණ පරිසරයට කිසිදු ප්‍රවේශයක් නොමැති නිසා ඔබට මේ ආකාරයෙන් ඒකකය පරීක්ෂා කිරීමට අවශ්‍ය විය හැකිය PhysicalRefrigerator.)

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


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

8
@DewiMorgan: නිසැකවම ඔබ සාමාන්යකරණයක් තවදුරටත් refactor හැකි Refrigeratorවූ බවට IngredientSource, හෝ බවට "සැන්ඩ්විච්" සංකල්පය, සාමාන්යකරණයක් template<typename... Fillings> StackedElementConstruction<Fillings...> make_sandwich(ElementSource&); එය "සාමාන්‍ය ක්‍රමලේඛනය" ලෙස හැඳින්වෙන අතර එය සාධාරණ ලෙස බලවත් ය, නමුත් නියත වශයෙන්ම එය OP සැබවින්ම මේ මොහොතේ ඇතුළුවීමට අවශ්‍යවට වඩා චාම් ය. සැන්ඩ්විච් වැඩසටහන් සඳහා වියුක්ත කිරීමේ මට්ටම පිළිබඳ නව ප්‍රශ්නයක් විවෘත කිරීමට නිදහස් වන්න. ;)
Quuxplusone

11
කිසිදු වැරැද්දක් නොකරන්න, නුසුදුසු පරිශීලකයාට ප්‍රවේශය තිබිය යුතු නොවේmake_sandwich() .
dotancohen

2
Ew ඩෙවි - එක්ස්කේසීඩී සබැඳිය
ගැවින් ලොක්

20
ඔබේ කේතයේ ඇති බරපතලම දෝෂය නම් ඔබ රටකජු බටර් ශීතකරණයක් තුළ තබා ගැනීමයි.
මල්වෝලියෝ

15

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


3
level3()අවශ්‍ය නම් newParam, එය නිසැකවම සම්බන්ධ වේ, නමුත් කෙසේ හෝ කේතයේ විවිධ කොටස් එකිනෙකා සමඟ සන්නිවේදනය කළ යුතුය. එම ශ්‍රිතය පරාමිතිය භාවිතා කරන්නේ නම් මම අනිවාර්යයෙන්ම ශ්‍රිත පරාමිතියක් නරක සම්බන්ධ කිරීමක් ලෙස නොකියමි. මම හිතන්නේ දාමයේ ගැටළු සහගත අංගය වන්නේ හඳුන්වා දී ඇති අතිරේක සම්බන්ධ කිරීම වන level1()අතර level2()එය newParamසම්මත කිරීම හැර වෙනත් ප්‍රයෝජනයක් නැත . හොඳ පිළිතුරක්, සම්බන්ධ කිරීම සඳහා +1.
ශුන්‍ය

6
ulnull ඔවුන්ට සැබවින්ම ඒ සඳහා ප්‍රයෝජනයක් නොතිබුනේ නම්, ඔවුන්ගේ ඇමතුම්කරුගෙන් ලැබීම වෙනුවට වටිනාකමක් ලබා ගත හැකිය.
සසම්භාවී 832

3

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

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

public void PerformReporting(StuffRepository repo, string desiredName) {
   var stuffs = repo.GetStuff(DateTime.Now());
   FilterAndReportStuff(stuffs, desiredName);
}

public void FilterAndReportStuff(IEnumerable<Stuff> stuffs, string desiredName) {
   var filter = CreateStuffFilter(FilterTypes.Name, desiredName);
   ReportStuff(stuffs.Filter(filter));
}

public void ReportStuff(IEnumerable<Stuff> stuffs) {
   stuffs.Report();
}

කළ යුතු දේ තව තවත් නරක අතට හැරෙන බව සලකන්න ReportStuff. ඔබට භාවිතා කිරීමට අවශ්‍ය වාර්තාකරුගේ අවස්ථාවෙහිදී ඔබට සමත් විය හැකිය. තවද, භාර දිය යුතු සියලු ආකාරයේ පරායත්තතා, කූඩු ක්‍රියාකාරිත්වයට ක්‍රියා කරයි.

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

public void PerformReporting(StuffRepository repo, string desiredName) {
   var stuffs = repo.GetStuff(DateTime.Now());
   var filter = CreateStuffFilter(FilterTypes.Name, desiredName);
   var filteredStuffs = stuffs.Filter(filter)
   filteredStuffs.Report();
}

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

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

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

මම මෑතකදී පන්තියකට ඒකක පරීක්ෂණ එකතු කිරීමට උත්සාහ කළෙමි (මා ලියා නැති) පරායත්තතා 17 ක් වැනි දෙයක් ගත් අතර ඒ සියල්ල සමච්චලයට ලක් විය යුතුය! මම තවම ඒ සියල්ල සාර්ථක කර ගෙන නැත, නමුත් මම පන්තිය පන්ති තුනකට බෙදුවෙමි, සෑම එකක්ම ඒ හා සම්බන්ධ වෙනම නාම පදයක් සමඟ ගනුදෙනු කරන අතර, යැපුම් ලැයිස්තුව නරකම එක සඳහා 12 දක්වාත්, නරකම එක සඳහා 8 ක් දක්වාත් ලබා ගත්තා. හොඳම එක.

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


2

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


1
විස්තර මත ටිකක් දුර්වලයි, එය බොහෝ විට පහත වැටීම් පැහැදිලි කරයි. එහෙත් ආත්මයෙන් මෙම පිළිතුර හරියටම ක්‍රියාත්මක වේ: OP ඩිමීටරයේ නීතිය කියවිය යුතුය - මෙය අදාළ පදයයි.
කොන්රාඩ් රුඩොල්ෆ්

4
FWIW, ඩිමීටර් නීතිය (හෝ "අවම වරප්‍රසාදය") කිසිසේත්ම අදාළ යැයි මම නොසිතමි. OP හි නඩුව නම් ට්‍රම්ප් දත්ත නොමැති නම් ඔහුගේ කාර්යයට එහි කාර්යය කිරීමට නොහැකි වනු ඇත (ඇමතුම් තොගයට පහළින් සිටින ඊළඟ පුද්ගලයාට එය අවශ්‍ය නිසා, ඊළඟ පුද්ගලයාට එය අවශ්‍ය වන නිසා සහ එසේ ය). අවම වරප්‍රසාදය / ඩිමීටරයේ නීතිය අදාළ වන්නේ පරාමිතිය සැබවින්ම භාවිතා නොකළහොත් පමණි , එම අවස්ථාවේදී නිවැරදි කිරීම පැහැදිලිය: භාවිතයට නොගත් පරාමිතිය ඉවත් කරන්න!
Quuxplusone

2
මෙම ප්‍රශ්නයේ තත්වයට ඩිමීටර් නියමය සමඟ හරියටම සම්බන්ධයක් නැත ... ක්‍රම ඇමතුම් දාමය සම්බන්ධයෙන් මතුපිට සමානකමක් ඇත, නමුත් වෙනත් ආකාරයකින් එය බෙහෙවින් වෙනස් ය.
එරික් කිං

නමුත්, මෙම දෝශයට @Quuxplusone මෙම නඩුවේ විස්තර තරමක් අසාත්මික ඇමතුම් ඇත්තටම රංගනය තුළ තේරුමක් නැති නිසා ඔබට පමණක් ඔවුන් කළ යුතු පතරෙහි වෙනුවට.
කොන්රාඩ් රුඩොල්ෆ්

1
LoD උල්ලං to නයන් සමඟ ගැටළුව බොහෝ සෙයින් සමාන ය, මන්ද යත්, LoD උල්ලං with නයන් සමඟ කටයුතු කිරීමට යෝජනා කරන සුපුරුදු ප්‍රතිචක්‍රීකරණය ට්‍රම්ප් දත්ත හඳුන්වා දීමයි. IMHO, මෙය සම්බන්ධ කිරීම අඩු කිරීම සඳහා හොඳ ආරම්භක ස්ථානයක් වන නමුත් එය ප්‍රමාණවත් නොවේ.
ජර්ගන් ෆෝග්

1

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

යමෙකු ක්‍රියාකාරී ක්‍රමලේඛනයක් කරන්නේ නම් OP විසින් ප්‍රකාශ කරන ලද ප්‍රවේශය ඉතා ප්‍රයෝජනවත් වේ .


0

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

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

ඔබට ඇමතුම් දාමයක් පෙනේ - නමුත් ඇමතුම් දාමයක් නොමැත. ඉහළින්ම කළ හැකි කාර්යයක් ඇත. තවද වෙනත් කාර්යයන් ඇත. සෑම කාර්යයක්ම ඕනෑම වේලාවක ප්‍රතිස්ථාපනය කළ හැකිය.

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.