# කලාපයන් ප්‍රති-රටාවක් හෝ කේත සුවඳක්ද?


275

C # මඟින් කේතයේ ප්‍රදේශ සංස්කාරකයේ බිඳවැටීමට හැකි වන පරිදි #region/ #endregionමූල පද භාවිතා කිරීමට ඉඩ දෙයි . මම මෙය කරන සෑම විටම වෙනත් පංති හෝ ක්‍රම වලට ප්‍රතිනිර්මාණය කළ හැකි විශාල කේත කැබලි සැඟවීමට මම එය කරමි. උදාහරණයක් ලෙස කලාප 3 ක් හෝ 4 ක් සහිත කේත පේළි 500 ක් කළමණාකරනය කිරීම සඳහා ක්‍රම මම දැක ඇත්තෙමි.

එසේනම් කලාප යුක්තිසහගත ලෙස භාවිතා කිරීම කරදරයේ සලකුණක් ද? එය මට එසේ බව පෙනේ.


9
FYI: කෝඩ්මැප් කලාපයේ අවශ්‍යතා ඉවත් කරයි. visualstudiogallery.msdn.microsoft.com/… - ක්ලික් කර එය ක්‍රමයට / ගුණාංගයට / ඕනෑම දෙයකට ඔබව ගෙන යයි. මම සෑම දිනකම එය භාවිතා කරන අතර ඔබ produc ලදායිතාවයෙන් සහ සංජානනමය වශයෙන් ද කොපමණ මුදලක් ලබා ගන්නේද යන්න පුදුම සහගතය. ඔබට පන්තියේ වඩාත් පැහැදිලි 'කුරුල්ලන්ගේ ඇස් පෙනීම' ලැබේ.

7
කාටහරි මෙය විකියක් බවට පත් කළ හැකිද? මෙම ප්‍රශ්නයට නිවැරදි හෝ වැරදි පිළිතුරක් නොමැත (හොඳයි, හේතුව ඇතුළත), එය සම්පූර්ණයෙන්ම පාහේ ආත්මීය ය.
එඩ් එස්.

6
එය වටින දේ සඳහා ජෙෆ් ඇට්වුඩ් ඔවුන්ට වෛර කරයි . ඔහු නරක කේත සඟවන බව ඔහු තර්ක කරයි.
බ්‍රයන්

5
කේත සුවඳ යනු ස්නානය නොකරන සහ ඩියෝඩ්‍රන්ට් භාවිතා නොකරන සංවර්ධකයෙකි!
මාර්කෝ

5
ගඳ ගසන ලද කේත වලින් පරිස්සමින් සකසන ලද කලාප යනු ෆෙබ්‍රීස් මිරිකීමෙන් ස්වල්පයක් කබොල සහිත යහනක සිදු කිරීමයි. එය ප්‍රතිස්ථාපනය කිරීමට (කාලය) මුදල් සොයා ගන්නා තෙක් එය දරාගත හැකිය.
නිව්ටෝපියන්

Answers:


295

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

සිට:

ප්‍රති-රටාව (හෝ ප්‍රති-රටාව) යනු සමාජීය හෝ ව්‍යාපාර මෙහෙයුම් හෝ මෘදුකාංග ඉංජිනේරු විද්‍යාවේ බහුලව භාවිතා වන නමුත් අකාර්යක්ෂම හා / හෝ ප්‍රායෝගිකව ප්‍රති ro ලදායක වන රටාවකි.

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

ක්‍රම ඇතුළත කලාප භාවිතා නොකරන්න; ඒ වෙනුවට ප්‍රතික්‍රියාකාරකය

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

එසේම, සෑම ක්රමයක්ම එක හා එකම දේ කළ යුතුය. කලාප, අනෙක් අතට, විවිධ දේ වෙන් කිරීමට අදහස් කරයි . ඔබේ ක්‍රමය A, B නම්, කලාප දෙකක් නිර්මාණය කිරීම තර්කානුකූල ය, නමුත් මෙය වැරදි ප්‍රවේශයකි; ඒ වෙනුවට, ඔබ ක්‍රමවේදය වෙනම ක්‍රම දෙකකට ප්‍රතිනිර්මාණය කළ යුතුය.

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

private void DoSomething()
{
    var data = LoadData();
    #region Work with database
    var verification = VerifySomething();
    if (!verification)
    {
        throw new DataCorruptedException();
    }

    Do(data);
    DoSomethingElse(data);
    #endregion

    #region Audit
    var auditEngine = InitializeAuditEngine();
    auditEngine.Submit(data);
    #endregion
}

දෙවන කලාපය කෙරෙහි අවධානය යොමු කිරීම සඳහා පළමු කලාපය බිඳ දැමීම අවදානම් පමණක් නොවේ: ගලායාම නැවැත්වීම හැර අපට පහසුවෙන් අමතක කළ හැකිය ( returnඒ වෙනුවට ආරක්ෂක වගන්තියක් තිබිය හැකිය , එය හඳුනා ගැනීම ඊටත් වඩා දුෂ්කර ය), නමුත් ගැටලුවක් ද ඇත කේතය මේ ආකාරයෙන් ප්‍රතිනිර්මාණය කළ යුතු නම්:

private void DoSomething()
{
    var data = LoadData();
    #region Work with database
    var verification = VerifySomething();
    var info = DoSomethingElse(data);

    if (verification)
    {
        Do(data);
    }

    #endregion

    #region Audit
    var auditEngine = InitializeAuditEngine(info);
    auditEngine.Submit(
        verification ? new AcceptedDataAudit(data) : new CorruptedDataAudit(data));
    #endregion
}

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

මම සමහර විට දකින තවත් අවස්ථාවක් මෙයයි:

public void DoSomething(string a, int b)
{
    #region Validation of arguments
    if (a == null)
    {
        throw new ArgumentNullException("a");
    }

    if (b <= 0)
    {
        throw new ArgumentOutOfScopeException("b", ...);
    }
    #endregion

    #region Do real work
    ...
    #endregion
}

තර්ක වලංගු කිරීම LOC දස දහස් ගණනක් දක්වා විහිදෙන විට කලාප භාවිතා කිරීමට පෙළඹේ, නමුත් මෙම ගැටළුව විසඳීමට වඩා හොඳ ක්‍රමයක් තිබේ: .NET Framework ප්‍රභව කේතය භාවිතා කරන ක්‍රමය:

public void DoSomething(string a, int b)
{
    if (a == null)
    {
        throw new ArgumentNullException("a");
    }

    if (b <= 0)
    {
        throw new ArgumentOutOfScopeException("b", ...);
    }

    InternalDoSomething(a, b);
}

private void InternalDoSomething(string a, int b)
{
    ...
}

කණ්ඩායම් කිරීමට ක්‍රම වලින් පිටත කලාප භාවිතා නොකරන්න

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

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

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

කලාප සඳහා හොඳ භාවිතයක් තිබේද?

අංක ජනනය කේතය: උරුමය භාවිතය ඇති විය. තවමත්, කේත උත්පාදනය කිරීමේ මෙවලම් වෙනුවට අර්ධ පන්ති භාවිතා කළ යුතුය. C # ට කලාපීය සහය තිබේ නම්, එය බොහෝ දුරට මෙම උරුම භාවිතය නිසා වන අතර, දැන් බොහෝ අය ඔවුන්ගේ කේතයේ කලාප භාවිතා කර ඇති නිසා, පවතින කේත පදනම් කඩ නොකර ඒවා ඉවත් කිරීමට නොහැකි වනු ඇත.

ඒ ගැන සිතන්න goto. භාෂාව හෝ IDE විශේෂාංගයකට සහය දක්වයි යන්නෙන් අදහස් වන්නේ එය දිනපතා භාවිතා කළ යුතු බවයි. StyleCop SA1124 රීතිය පැහැදිලිය: ඔබ කලාප භාවිතා නොකළ යුතුය. කවදාවත්.

උදාහරණ

මම දැනට මගේ සහායකයාගේ කේතය පිළිබඳ කේත සමාලෝචනයක් කරමින් සිටිමි. කෝඩ්බේස්හි කලාප රාශියක් අඩංගු වන අතර ඇත්ත වශයෙන්ම කලාප භාවිතා නොකරන්නේ කෙසේද සහ කලාප නරක කේත වලට තුඩු දෙන්නේ ඇයි යන දෙකටම කදිම නිදසුනකි. මෙන්න උදාහරණ කිහිපයක්:

4 000 LOC රාක්ෂයා:

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

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

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

කලාපය “කරන්න”, කලාපය “කරන්න බී”:

තවත් විශිෂ්ට උදාහරණයක් වන්නේ රාක්ෂයා ආරම්භක ක්‍රමයක් වන අතර එය හුදෙක් කාර්ය 1, පසුව කාර්ය 2, පසුව කාර්ය 3 යනාදිය සිදු කරන ලදී. කාර්යයන් පහක් හෝ හයක් මුළුමනින්ම ස්වාධීන වූ අතර, සෑම එකක්ම බහාලුම් පන්තියක යමක් ආරම්භ කරයි. එම සියලු කාර්යයන් එක් ක්‍රමයකට කාණ්ඩ කර කලාපවලට කාණ්ඩ කරන ලදී.

මෙය එක් වාසියක් විය:

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

අනෙක් අතට, ගැටළු බහු විය:

  • කලාප අතර පරායත්තතා තිබේද යන්න පැහැදිලි නැත. බලාපොරොත්තු වන පරිදි, විචල්යයන් නැවත භාවිතා කිරීමක් සිදු නොවීය. එසේ නොවුවහොත් නඩත්තු කිරීම ඊටත් වඩා බියකරු සිහිනයක් විය හැකිය.

  • මෙම ක්‍රමය පරීක්ෂා කිරීමට නොහැකි තරම් විය. වරකට දේවල් විස්සක් කරන ක්‍රමය නිවැරදිව කරන්නේ දැයි ඔබ පහසුවෙන් දැන ගන්නේ කෙසේද?

ක්ෂේත්‍ර කලාපය, දේපල කලාපය, ඉදිකිරීම් කලාපය:

සමාලෝචනය කරන ලද කේතයේ සියලුම ක්ෂේත්ර, සියලු ගුණාංග එකට කාණ්ඩගත කළ ප්රදේශ රාශියක් අඩංගු විය. මෙය පැහැදිලි ගැටළුවක් විය: මූලාශ්ර කේත වර්ධනය.

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

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

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


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

9
යථාර්ථය පරීක්ෂා කිරීම. ප්‍රයෝජනවත් වූ අන්තර්-ක්‍රම # කලාප මම දැක ඇත්තෙමි. සමහර පේළි සිය ගණනක් පේළි සිය ගණනක් සමඟ කූඩු පාලන තර්කනය සහිත පේළි සිය ගණනක් ඔබ සතුව ඇති විට - මෝඩයාට අවම වශයෙන් කලාපවල දමා ඇති යහපත්කමට ස්තූතියි.
රේඩාර්බෝබ්

37
@radarbob: කෙටියෙන් කිවහොත්, මුලින් නොපවතින කපටි කේත සඳහා කලාප උපකාරී වේ.
අර්සෙනී මෝර්සෙන්කෝ

43
-1 (මට කීර්තියක් තිබුණා නම්). ඔබේ වර්ගයේ සාමාජිකයන් හොඳින් සංවිධානය වී වෙන්ව සිටියද, ඔවුන්ගෙන් බොහෝ දෙනෙක් සිටිය හැකිය. ඔබට වැඩ කිරීමට අවශ්‍ය ක්‍රමවේදයකට පිවිසීම සඳහා අතීත දේපල 10 ක් හෝ 12 ක් අනුචලනය කිරීමට සහ ඒ හා සම්බන්ධිතයින් සහ සැකසුම් කරුවන් විසින් කලාපයන් ඔබට ඉතිරි කරයි. එකම විකල්පය වන්නේ ඔබේ සියලු දේපල තනි තනිව කඩා දැමීමයි, එය මා රසිකයෙක් නොවේ. කලාපයන් සපයන මහා පරිමාණ සංදර්ශන / සැඟවීමේ ක්‍රියාකාරිත්වය අතිශයින්ම ප්‍රයෝජනවත් වේ. අභ්‍යන්තර ක්‍රම කලාප ගැන මම එකඟ වෙමි.
අසාද් සයීදින්

14
මෙම පිළිතුරට මම තදින්ම එකඟ නොවෙමි: කේත දුර්ගන්ධය සහ කලාපය එකිනෙකා සමඟ කිසිදු සම්බන්ධයක් නැත. ඔබේ කේතය ගඳ ගහනවා නම්, එය කලාප සමඟ හෝ නැතිව ගඳ ගසනු ඇත. මම කලාප භාවිතා කරන ආකාරය මගේ පන්ති කලාපවලට වෙන් කිරීමයි. සාමාන්‍යයෙන් මම එකම රටාවකට ඇලී සිටිමි: පොදු දේපල, පොදු ක්‍රම, පුද්ගලික ක්ෂේත්‍ර, පුද්ගලික ක්‍රම. මට කලාප ඇති එකම භාවිතය එයයි. වෙනත් ඕනෑම දෙයක්, ඔබ බොහෝ විට ඔබේ කේතයේ SRP විදුහල්පතිවරයා බිඳ දමයි.
ඇලෙක්සස්

115

කලාපයන් කෙතරම් උද්‍යෝගයෙන් වෛර කරනවාද යන්න මට ඇදහිය නොහැකි තරම්ය!

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

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

දැන් මම සී ++ හි වැඩ කිරීමට වැඩි කාලයක් ගත කර ඇති අතර, වින්ඩෝස් ඒපීඅයි වෙත වඩාත් සෘජුවම වැඩසටහන්ගත කර ඇති අතර, කලාප # සඳහා වන සහයෝගය සී # සඳහා තරම් හොඳ වනු ඇතැයි මම ප්‍රාර්ථනා කරමි. විකල්ප GUI පුස්තකාලයක් භාවිතා කිරීමෙන් මගේ කේතය සරල හෝ පැහැදිලි වනු ඇතැයි ඔබට තර්ක කළ හැකිය, එමඟින් අනවශ්‍ය කේත ශබ්දයක් තිරයෙන් ඉවත් කිරීමේ අවශ්‍යතාවය ඉවත් කරයි, නමුත් මට එය කිරීමට අකමැති වීමට වෙනත් හේතු තිබේ. මගේ යතුරුපුවරුව සහ IDE සමඟ මම ප්‍රවීණයි, කලාපවලට බෙදී ඇති කේතය පුළුල් කිරීම / බිඳ දැමීම තත්පරයකට වඩා අඩු කාලයක් ගතවේ. මම මොළ ශක්තියෙන් ඉතිරි කරන කාලය, මගේ සවි conscious ් focus ාණික අවධානය මා දැනට වැඩ කරන කේතයට පමණක් සීමා කිරීමට උත්සාහ කිරීම වටිනවාට වඩා වැඩිය. ඒ සියල්ල තනි පන්තියකට / ගොනුවකට අයත් වේ, නමුත් ඒ සියල්ල එකවර මගේ තිරය මත අයත් නොවේ.

කාරණය වන්නේ #regionsඔබේ කේතය වෙන් කිරීමට හා තර්කානුකූලව බෙදීමට භාවිතා කිරීම කිසිසේත් වළක්වා ගත යුතු නරක දෙයක් නොවන බවයි. එඩ් පෙන්වා දෙන පරිදි, එය "කේත සුවඳක්" නොවේ. ඔබේ කේතය ගඳ නම්, එය කලාප වලින් නොවන බව ඔබට සහතික විය හැකිය, නමුත් ඒ වෙනුවට ඔබ එම කලාපවල භූමදාන කිරීමට උත්සාහ කළ ඕනෑම කේතයකින්. විශේෂාංගයක් ඔබට වඩාත් සංවිධානාත්මක වීමට හෝ වඩා හොඳ කේතයක් ලිවීමට උපකාරී වේ නම්, මම එය භාවිතා කරන්නැයි කියමි . එය බාධාවක් බවට පත්වුවහොත් හෝ ඔබ එය වැරදි ලෙස භාවිතා කරන බවක් පෙනේ නම්, එය භාවිතා කිරීම නවත්වන්න . නරකම දේ නරකම නම්, එය භාවිතා කරන පුද්ගලයින් සමඟ කණ්ඩායමක් සමඟ වැඩ කිරීමට ඔබට බල කෙරෙන්නේ නම්, කේත ලුහු line ු සටහන් අක්‍රිය කිරීම සඳහා යතුරුපුවරු කෙටිමඟ කටපාඩම් කරන්න: Ctrl+ M, Ctrl+P. පැමිණිලි කිරීම නවත්වන්න. සමහර විට මට හැඟී යන්නේ මෙය “සත්‍ය”, “දෘ c” වැඩසටහන්කරුවන් ලෙස පෙනී සිටීමට කැමති අය තමන්ම ඔප්පු කර ගැනීමට උත්සාහ කරන තවත් ක්‍රමයක් බවයි. ඔබ සින්ටැක්ස් වර්ණ ගැන්වීමෙන් වැළකී සිටිනවාට වඩා කලාප මඟ හැරීමට වඩා හොඳ නැත. එය ඔබව වඩා හොඳ සංවර්ධකයෙකු බවට පත් නොකරයි.

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


9
හොඳයි කිව්වා. සංවිධානය සඳහා කලාප භාවිතා කිරීම IDE හි "දර්ශන සුදු අවකාශය" ටොගල් කිරීමට වඩා හානිකර නොවේ. එය පෞද්ගලික මනාපයකි.
ජොෂ්

25
මගේ ආකෘතියට ගුණාංග 10 ක් හෝ 20 ක් ඇති ViewModels සමඟ WPF හි වැඩ කිරීම, මම කලාපවලට ආදරෙයි - මට එම ගුණාංග කලාපයක ඉවතට ඇද දැමිය හැකිය (ඒවා කිසි විටෙකත් ස්පර්ශ කිරීමට අවශ්‍ය නැත) සහ අදාළ කේතය දෙස මගේ ඇස් තබා ගන්න .
කිර්ක් බ්‍රෝඩ්හර්ස්ට්

4
සම්පූර්ණයෙන්ම එකඟයි. .NET 2.0 හි ගුණාංග පේළි 8-10 ක් පමණ වේ. ඔබට පන්තියක දේපල 20 කට වඩා ඇති විට, ඔවුන් විශාල ඉඩ ප්‍රමාණයක් ගනී. ඒවා කඩා වැටීම සඳහා කලාප පරිපූර්ණයි.
ක්‍රිස්ටෝෆ් ක්ලේස්

6
Rist ක්‍රිස්ටෝෆ්: සරල ආදාන වලංගු කිරීමක් කරන .NET 4.0 හි ඇති ගුණාංග මෙන්. ස්වයංක්‍රීය ගුණාංග මගේ අරමුණු සඳහා එතරම් ඉන්ද්‍රජාලික නොවේ.
කෝඩි ග්‍රේ

8
කලාපවලට වෛර කරන පුද්ගලයින් කිසි විටෙකත් WPF යෙදුමක් සංවර්ධනය කර නැති බව හෝ දත්ත බන්ධනය සහ විධාන බන්ධනය වැනි WPF හි නිර්වචන ක්‍රියාකාරීත්වයන් කිසි විටෙකත් භාවිතා නොකළ බවට මගේ වම් පන්දුව පොරබැදීමට මම කැමැත්තෙමි. එම කාර්යයන් සිදු කිරීම සඳහා ඔබේ කේතය සැකසීම සඳහා විශාල ඉඩ ප්‍රමාණයක් අවශ්‍ය වන අතර සාමාන්‍යයෙන් ඔබ ඒවා නැවත බැලීමට අවශ්‍ය නැත.
l46kok

70

පළමුවෙන්ම, මට “කේත සුවඳ” යන යෙදුම තවදුරටත් ඉවසා සිටිය නොහැක. එය බොහෝ විට භාවිතා වන අතර හොඳ කේතයක් එය සපාකන්නේ නම් හඳුනාගත නොහැකි පුද්ගලයින් විසින් බොහෝ විට විසි කරනු ලැබේ. කොහොමත් ...

මම පෞද්ගලිකව කලාප ගොඩක් භාවිතා කිරීමට කැමති නැත. එය කේතය ලබා ගැනීම දුෂ්කර කරයි, සහ කේතය මා උනන්දු වන්නේය. බොහෝ විට ස්පර්ශ කිරීමට අවශ්‍ය නොවන කේත විශාල ප්‍රමාණයක් ඇති විට මම කලාපවලට කැමතියි. ඒ හැරුණු විට ඔවුන් මගේ මාර්ගයට පිවිසෙන බවක් පෙනේ. “පුද්ගලික ක්‍රම”, “පොදු ක්‍රම” වැනි කලාප මා පිස්සු වට්ටයි. ඒවා විවිධත්වයේ අදහස් වලට සමානයි i++ //increment i.

කලාප සංස්කරණයේ සැකැස්ම නොව වැඩසටහන් තර්කනය / සැලසුම් රටා විස්තර කිරීම සඳහා එම පදය බහුලව භාවිතා වන බැවින් කලාප භාවිතය ඇත්ත වශයෙන්ම “ප්‍රති-රටාවක්” විය නොහැකි බව මම එකතු කරමි. මෙය ආත්මීය ය; ඔබට ගැලපෙන දේ භාවිතා කරන්න. ඔබ කලාප අධික ලෙස භාවිතා කිරීම නිසා ඔබ කිසි විටෙකත් හඳුනාගත නොහැකි වැඩසටහනක් සමඟ අවසන් නොවනු ඇත, ප්‍රති-රටා යනු එයයි. :)


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

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

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

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

7
පරිපූර්ණ උපමාවක් අනිසි ලෙස භාවිතා කිරීම රූපකය අවතක්සේරු නොකළ යුතු යැයි පැවසීමට අවශ්‍යය. "කේත සුවඳ" යනු ක්ෂණිකව තේරුම් ගත හැකි, පහසුවෙන් මතක තබා ගත හැකි සහ පහසුවෙන් භාවිතා කළ හැකි විශිෂ්ට රූපකයකි. “කේත සුවඳ” රූපකය යෙදීම තවමත් ලක්ෂ්‍යයක් ලබා ගත හැකි හොඳම ක්‍රමය වන ස්ථාන ඕනෑ තරම් තිබේ.
එරික් කිං

23

ඔව් කලාප යනු කේත සුවඳකි!

සම්පාදකයාගෙන් කලාප සම්පූර්ණයෙන්ම ඉවත් කිරීම ගැන මම සතුටු වෙමි. සෑම සංවර්ධකයෙක්ම තමාගේ හෝ ඇයගේ තේරුමක් නැති මනාලියන් යෝජනා ක්‍රමයක් ඉදිරිපත් කරන අතර එය කිසි විටෙකත් වෙනත් ක්‍රමලේඛකයෙකුට වටින්නේ නැත. ක්‍රමලේඛකයන්ට තම දරුවා අලංකාර කිරීමට හා අලංකාර කිරීමට අවශ්‍ය සෑම දෙයක්ම මා සතුව ඇත.

"ගීස්, මගේ සගයා මෙහි සමහර කලාප භාවිතා කර ඇතැයි මම ප්‍රාර්ථනා කරමි" යන එක් උදාහරණයක් ගැන ඔබට සිතිය හැකිද?

සෑම කලාපයක්ම ස්වයංක්‍රීයව ව්‍යාප්ත කිරීම සඳහා මගේ IDE වින්‍යාසගත කළ හැකි වුවද, ඒවා තවමත් ඇස් පෙනීම ඇති අතර සැබෑ කේතය කියවීමෙන් ract ත් වේ.

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

වටිනාකමක් නැති ඇඳුම් පැළඳුම්!

මීට අමතරව, ඔබේ ගොනුවට අවශ්‍ය නම් සහ කලාප භාවිතා කිරීම තුළින් 'තොරතුරු සැකැස්ම' ඔබට මූලික ගැටළුවට එරෙහිව සටන් කිරීමට අවශ්‍ය විය හැකිය: ඔබේ පන්තිය ඉතා විශාලය! එය කුඩා කොටස් වලට කැඩීම වඩා වාසිදායක වන අතර, නිසි පරිදි කළ විට සැබෑ අර්ථකථන / කියවීමේ හැකියාව එක් කරයි.


# කලාප සම්පාදකයාගේ කොටසක්ද? මම සිතුවේ ඒවා නොසලකා හැරිය හැකි IDE සඳහා වූ නියෝගයක් පමණක් බවයි.
ස්ටීව් රුකුට්ස්

2
ඔබේ C # කේතය විග්‍රහ කිරීමේදී සම්පාදකයාට ඒවා නොසලකා හැරිය යුතුය. එය ඔවුන් නොසලකා හැරියහොත් එය ඔවුන් මතට විසි වනු ඇත. මම කිව්වේ ඒක එහෙමයි.
ජොප්

1
"ඔබ එක් උදාහරණයක් ගැන සිතිය හැකිද" ගීස්, මගේ සගයා මෙහි සමහර කලාප භාවිතා කර ඇතැයි මම ප්‍රාර්ථනා කරමි! " ඔව්, බොහෝ දේ. මට පෞද්ගලික ක්‍රම සහ පොදු ක්‍රමවේදයන් සහිත පංතියක් ඇති විට, මම ඒවා කලාප වශයෙන් වෙන් කරමි, මන්ද පොදු ක්‍රම ප්‍රතිනිර්මාණය කිරීමේදී, ඔබ අනිවාර්යයෙන්ම පුද්ගලික කේතය ස්පර්ශ කිරීමට අවශ්‍ය නොවන අතර අනෙක් අතට.
අන්ෂුල්

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

15

විවිධ ක්‍රම හෝ කේත කොටස් කාණ්ඩගත කිරීමේ ක්‍රමයක් ලෙස මම පුද්ගලිකව කලාප භාවිතා කරමි.

එබැවින් කේත ගොනුවක් විවෘත කළ විට මේ වගේ විය හැක:

  • පොදු දේපල
  • ඉදිකිරීම්කරුවන්
  • ක්‍රම සුරකින්න
  • ක්‍රම සංස්කරණය කරන්න
  • පුද්ගලික උපකාරක ක්‍රම

මම ක්‍රමවේදයන් තුළ කලාප තබන්නේ නැත. IMHO එය කේත සුවඳ පිළිබඳ සං sign ාවකි. මට වරක් පේළි 1200 කට වඩා දිගින් යුත් විවිධ කලාප 5 ක් ඇති ක්‍රමයක් හමු විය. එය බියජනක දසුනක් විය!

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


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

3
එස්. එස්. - ඒකයි මම කිව්වේ "වගේ වෙන්න පුළුවන්" කියලා. එය ඉතා ආත්මීය ය. සෑම ගොනුවක්ම එසේ විය යුතු යැයි මම නොකියමි. ඔවුන් එසේ කළා නම් මම පුදුම වෙමි. සංකීර්ණ මාතෘකාවක් පිළිබඳ උදාහරණයක් පමණි. :)
ටියානා

ඔහ්, මම කීවාක් මෙන්; එය ආත්මීයයි. ඔබ / ඔබේ කණ්ඩායම වෙනුවෙන් වැඩ කරන ඕනෑම දෙයක්. මම මෙම යෝජනා ක්‍රමය සඳහා එය ක්‍රියාත්මක කර ඇත්තේ එය ක්‍රියාත්මක නොවන නිසා (මට), නමුත් මට මෙය සිදු කළ ව්‍යාපෘතියක් නඩත්තු කිරීමට සිදුවිය. ඒක මට පිස්සු හැදුවා.
එඩ් එස්.

3
D එඩ්ස්. එබැවින් එදිරිව ඔබේ විකල්ප වෙත ගොස් කලාප අක්‍රිය කරන්න. ගැටළුව විසඳා ඇත.
ඇන්ඩි

ඔබේ වස්තූන් සුරැකීමේ ක්‍රම ඇත්තේ ඇයි? :(
TheCatWhisperer

10

#regionඉතා විශාල පංතියක් කියවිය හැකි වන පරිදි බ්ලොක් භාවිතා කිරීම සාමාන්‍යයෙන් තනි වගකීම් මූලධර්මය උල්ලං of නය කිරීමේ ලකුණකි. කණ්ඩායම් හැසිරීමට ඔවුන් පුරුදු වී සිටින්නේ නම්, පංතිය ඕනෑවට වඩා වැඩ කරන බව පෙනේ (නැවත වරක් SRP උල්ලං ting නය කිරීම).

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


5

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

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

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

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

පොදුවේ ගත් කල, කලාපයන් මට සංවිධානාත්මකව සිටීමටත්, මගේ කේතය "ලේඛනගත කිරීමට" උදව් කිරීමටත්, කලාප භාවිතා නොකරන්නේ නම් ඉක්මණින් ප්‍රතික්‍රියාකාරක සඳහා ස්ථාන අල්ලා ගැනීමටත් මට උපකාර කරයි.


4

විවිධ වර්ගයේ මෙහෙයුම් සංවිධානය කිරීම සඳහා මම ප්‍රධාන වශයෙන් CRUD සේවාදායක පන්ති සඳහා කලාප භාවිතා කරමි. එසේ වුවද, ඔවුන් නොමැතිව මට සතුටින් යා හැකිය.

පුළුල් ලෙස භාවිතා කරන්නේ නම්, එය රතු ධජයක් ඔසවනු ඇත. මම ඕනෑවට වඩා වගකීම් ඇති පන්ති සොයමින් සිටිමි.

මගේ අත්දැකීම් අනුව, කේත සිය ගණනක් සහිත ක්‍රමයක් අනිවාර්යයෙන්ම සුවඳකි.


4

මගේ නියමය නම්: ඔබට ගොනුවක කලාප 5 කට වඩා තිබේ නම් එය කේත සුවඳකි

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

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


4

කලාප ඒවායේ භාවිතය ඇත

වින්ඩෝස් ආකෘති යෙදුම් සඳහා පෙර මම ඒවා "අත් කේතීකරණ" අතුරුමුහුණත් සඳහා පුද්ගලිකව භාවිතා කර ඇත්තෙමි.

කෙසේ වෙතත් මගේ කාර්යයේදී අපි SQL හැසිරවීම සඳහා කේත උත්පාදක යන්ත්‍රයක් භාවිතා කරන අතර එය ස්වයංක්‍රීයව එහි තේරීම්, යාවත්කාලීන කිරීම්, මකාදැමීම් ක්‍රම වර්ග කිරීම සඳහා කලාප භාවිතා කරයි.

ඒ නිසා මම ඒවා බොහෝ විට භාවිතා නොකරන අතර, විශාල කේත කැබලි ඉවත් කිරීම සඳහා ඒවා ඉතා හොඳයි.


1
මම සමාන කේත ජනක යන්ත්‍ර භාවිතා කර ඇති අතර ජනනය කළ කේතය ඉවත් කිරීම සඳහා අර්ධ පන්ති භාවිතා කිරීමට කැමැත්තෙමි.
ක්‍රේග්

කියවීම හෝ නිදොස් කිරීම පහසු කිරීම සඳහා ජනනය කරන ලද කේතය තුළ කලාප තිබේ (අවශ්‍ය නම්).
කෙන්

4

ඔබට කේත IN කලාප තිබේ නම් ඔබට නිසැකවම ගැටළුවක් ඇත (උත්පාදනය කළ කේතය හැර). කලාප කේත කේතයට දැමීම මූලික වශයෙන් කියනුයේ “මෙය ප්‍රතික්‍රියා කරන්න” යන්නයි.

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


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

3

මෑත ව්යාපෘතියක, 1700 පේළි ක්රමයක් එහි කලාප කිහිපයක් ඇතුළත් කර ඇත. සිත්ගන්නා කරුණ නම්, ක්‍රමවේදය තුළ සිදු කෙරෙමින් පවතින සුවිශේෂී ක්‍රියා කලාපයන් විසින් වෙන් කර තිබීමයි. කේතයේ ක්‍රියාකාරීත්වයට කිසිදු බලපෑමක් නොකර එක් එක් කලාපයන්හි ප්‍රතික්‍රියාකාරක -> නිස්සාරණ ක්‍රමයක් කිරීමට මට හැකි විය.

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


3

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

මේ දක්වා මා දුටු කලාපය භාවිතා කරන කේතය දළ වශයෙන් කොටස් තුනකට බෙදිය හැකිය:

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

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

  • සිසුන් හෝ මෑත කාලීන උපාධිධාරීන් විසින් ලියන ලද කේතය. සමහර වැඩසටහන් සහ පා courses මාලා සෑම ආකාරයකම අමුතු අරමුණු සඳහා කලාප භාවිතා කිරීමට සිසුන් පොළඹවන බව පෙනේ. කලාපීය ටැග් වල අනුපාතය කේත රේඛාවලට 1: 5 හෝ ඊට වඩා නරක පරාසයක පවතින ස්ථානයට ප්‍රභව කේත පැටවීම ඔබ දකිනු ඇත.


3

මම කියන්නේ එය "කේත සුවඳක්" බවයි.

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


Nd ඇන්ඩ rew ග්‍රිම්: ඔව්
whatsisname

3

මම කලාප භාවිතා කරන්නේ එක් දෙයකට පමණි (අවම වශයෙන් මම ඒවා භාවිතා කරන වෙනත් ස්ථාන ගැන මට සිතිය නොහැක): ක්‍රමයක් සඳහා කණ්ඩායම් ඒකක පරීක්ෂණ සඳහා.

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

මම අතීතයේ කේත සංවිධානය කිරීමට කලාප භාවිතා කර ඇති නමුත් මම එය අවසන් වරට කළ බව මතක නැත. ඒකක පරීක්ෂණ පන්ති වලදී මම මගේ ප්‍රදේශවලට ඇලී සිටිමි.


1
ඔබට කවදා හෝ එක් ක්‍රමයකට වඩා පරීක්ෂා කරන පරීක්ෂණ තිබේද?
මාර්සි

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

2

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

මෙම ප්ලගිනය කලාපවල අකුරු ප්‍රමාණය සැබවින්ම කුඩා කරයි. ඒවා ද පුළුල් වන බැවින් සියලු කලාප විවෘත කිරීමට ඔබට ctr + m + l පහර දීමට සිදු නොවේ. එය මෙම ආකාරයේ පිළිකා පිළියමක් නිවැරදි නොකරන නමුත් එය දරාගත හැකිය.


0

දෘශ්‍යතාව සහ සාමාජික වර්ගය එක් එක් සංයෝජනය අඩංගු කිරීමට මම කලාප භාවිතා කරමි. එබැවින් සියලුම පුද්ගලික කාර්යයන් කලාපයකට යති.

මා මෙය කිරීමට හේතුව මට කේතය නැමිය හැකි නොවේ. එයට හේතුව මගේ සංස්කාරකය තිර රචනය කර ඇති නිසා මට ප්‍රොක්සියකට යොමු කිරීමක් ඇතුළත් කළ හැකිය:

#region "private_static_members"
 /// <summary>
 /// cache for LauncherProxy
 /// </summary>
private static LauncherProxy _launcherProxy;
#endregion

#region "protected_const_properties"
protected LauncherProxy LauncherProxy{
  get{
    if(_launcherProxy==null) {
      if (!God.Iam.HasProxy(LauncherProxy.NAME)) {
        God.Iam.RegisterProxy(new LauncherProxy());
      }
      _launcherProxy=God.Iam.Proxy(LauncherProxy.NAME) as LauncherProxy;
    }
    return _launcherProxy;
  }
}
#endregion

කේතයට ඇතුළු වී සෑම කොටසක්ම නිසි කලාපයට පිළිවෙලට තබා ඇත.

මෙම අවස්ථාවේ දී සාර්ව මගේ ව්‍යාපෘතිය විශ්ලේෂණය කර, මට ප්‍රොක්සි ලැයිස්තුවක් ලබා දී මට අවශ්‍ය කේතය එන්නත් කරනු ඇත. මගේ කර්සරය චලනය වන්නේවත් නැත.

C # ඉගෙනීමේ ආරම්භයේ දී, පොදු භාවය එකට තබා ගැනීම සඳහා කලාප භාවිතා කිරීම ගැන මම සලකා බැලුවෙමි, නමුත් එය සෑම විටම එකින් එක සම්බන්ධතාවයක් නොවන නිසා එය සාර්ථක හා අතපසු වූ යෝජනාවකි. කලාප දෙකක් විසින් භාවිතා කරන සාමාජිකයෙකු ගැන කෝප වීමට හෝ එම නියමයන් මත දේවල් බිඳ දැමීමට පටන් ගන්නේ කාටද?

අනෙක් වර්ගීකරණය වන්නේ ක්‍රම වේ- මම විධානයන්, කාර්යයන් සහ හසුරුවන්නන් ලෙස ක්‍රම බිඳ දමමි, එබැවින් මට රාජ්‍ය, පෞද්ගලික, ආදිය සඳහා කලාපයක් ඇත.

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


-1 මට ලකුණු 125 ක් ලැබුනු වහාම. ඔබ අනවශ්‍ය කේත පේළි එකතු කරමින් සිටී. ඇයි ඔබ දේපලක් වටා කලාපයක් තබන්නේ ... ඇයි නම් (God.Iam.AbusingRegions () == true)
myName

1
EdDeadlyChambers දෙවන ඡේදයේ සඳහන් කර ඇත - ගොනුවට පොදු කේත රටා එන්නත් කිරීම සඳහා මම සංස්කාරක මැක්‍රෝස් භාවිතා කරමි, කලාපයන් ගොනුව ව්‍යුහගතව තබා ගැනීමට උපකාරී වන අතර ඒ හා සමාන අයිතම කාණ්ඩ කර ඇත. මම ඒකීය දේපලක් වටා කලාපයක් තබන්නේ නැත, නමුත් සියලු දේපල ඔවුන්ගේ "ආරක්‍ෂිත_කොන්ස්ට්_ප්‍රොපර්ටීස්" ගුණාංග මත පදනම්ව නම් කරන ලද කලාපයකට වැටේ. ඔබ ලිපිය කියවූවාද ??
මාර්ක්

1
ඔබට එය නැවත ප්‍රතිනිර්මාණය කළ හැකිය: ආරක්ෂිත LauncherProxy LauncherProxy => God.Iam.GetOrAddProxy <LauncherProxy> (ref _launcherProxy); එබැවින් ඔබට දැන් කලාපය අවශ්‍ය නොවේ. _LuncherProxy _launcherProxyCache ලෙස නම් කළ හැකි බැවින් ඔබට කලාපය හෝ අදහස් දැක්වීම අවශ්‍ය නොවේ.
aeroson

0

කලාප යනු පෙර සැකසුම් ප්‍රකාශන වේ - වෙනත් වචන වලින් කිවහොත් ඒවා අදහස් ලෙස සලකනු ලබන අතර මූලික වශයෙන් සම්පාදකයා විසින් නොසලකා හරිනු ලැබේ. ඒවා තනිකරම දෘශ්‍ය ස්ටුඩියෝ හි භාවිතා කරන දෘශ්‍ය මෙවලමකි. එබැවින් #region යනු කේත සුවඳක් නොවේ, මන්ද එය කේතයක් නොවන බැවිනි. කේත සුවඳ යනු පේළි 800 ක ක්‍රමයකි. එය විවිධ වගකීම් වලින් සමන්විත වේ. එබැවින් ඔබ කලාප 10 ක් එක් ක්‍රමයකින් දුටුවහොත් - එය බොහෝ විට කේත සුවඳක් සැඟවීමට භාවිතා කරයි. ඉතා හොඳින් ලිඛිත හා ව්‍යුහාත්මක පංතියක දී පංතියක් ඇසට ප්‍රියමනාප හා වඩාත් යාත්‍රා කළ හැකි වන පරිදි ඒවා අතිශයින්ම effectively ලදායී ලෙස භාවිතා කර ඇති බව මා දැක ඇති බව පැවසීමෙන් පසු!


-1

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

කලාපයන් වස්තු-නැඹුරුවන කේතයට වඩා ක්‍රියාකාරී කේතයට වඩා වැඩි සේවාවක් සපයයි, IMO, එහිදී ඔබට අනුක්‍රමික දත්තවල දීර් functions කාර්යයන් ඇති අතර එය බිඳී යාමේ තේරුම ඇත, නමුත් මම ඒවා පෞද්ගලිකව c # හි භාවිතා කර ඇති අවස්ථා තිබේ, ඒවා සෑම විටම පාහේ ඔබට බැලීමට අවශ්‍ය / අවශ්‍ය නොවන කේතය කෙරෙහි අවධානය යොමු කරන්න. මට නම් මේවා සාමාන්‍යයෙන් NPoco හෝ එහි ප්‍රභේද සඳහා භාවිතා කරන කේත පදනමේ අමු SQL නූල් නියතයන් විය. ඔබේ ORM හරහා POCO වස්තුව පිරවීම සඳහා දත්ත පැමිණෙන්නේ කෙසේදැයි ඔබ සැබවින්ම සැලකිලිමත් නොවන්නේ නම්, මේවා බැලීමට සම්පූර්ණයෙන්ම අර්ථ විරහිත විය ... ඔබ සැලකිලිමත් වූයේ නම්, ඒයි, කලාපය පුළුල් කර BAM! ඔබගේ නැරඹීමේ සතුට සඳහා සංකීර්ණ SQL විමසුමක පේළි 150+.

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.