Mataupu Faavae o le Tiutetauave Tasi. E le faigofie e pei ona foliga mai

Mataupu Faavae o le Tiutetauave Tasi. E le faigofie e pei ona foliga mai mataupu faavae o le tiutetauave nofofua, ua lauiloa foi o le mataupu faavae o le tiutetauave nofofua,
aka o le mataupu faavae o le fesuiaiga o toniga - o se tagata matua maseesee e malamalama ma se fesili popole i se faatalanoaga polokalame.

O laʻu masaniga muamua ma lenei mataupu faavae na tupu i le amataga o le tausaga muamua, ina ua ave tamaiti laiti ma lanu meamata i le vaomatua e faia ai tamaiti aoga mai larvae - tamaiti aoga moni.

I totonu o le vaomatua, na vaevaeina i matou i ni vaega o le 8-9 tagata taʻitasi ma faia se tauvaga - o le a le vaega e sili ona vave inu se fagu vodka, pe a faʻapea o le tagata muamua mai le vaega e sasaa vodka i totonu o se ipu malamalama, o le lona lua e inu ai, ma le lona tolu o loo i ai se meaai mama. O le iunite ua maeʻa lana gaioiga e alu i le pito o le laina a le vaega.

O le tulaga lea o le tele o le laina o le tele o le tolu o se faʻatinoga lelei o le SRP.

Fa'amatalaga 1. Tiute nofofua.

O le faʻamatalaga aloaia o le Single Responsibility Principle (SRP) o loʻo taʻua ai e tofu lava le kamupani ma lana matafaioi ma le mafuaʻaga o le ola ai, ma e tasi lava le matafaioi.

Mafaufau i le mea faitino “Inu inu” (Tippler).
Ina ia faʻatinoina le faʻavae SRP, o le a matou vaevaeina tiute i le tolu:

  • tasi le sasaa (PourOperation)
  • Tasi mea inu (DrinkUpOperation)
  • E iai se mea'ai (TakeBiteOperation)

O i latou uma e auai i le faagasologa e nafa ma se vaega e tasi o le faagasologa, o lona uiga, e tasi le matafaioi atomic - inu, sasaa pe meaai mama.

O le vai inu, i le isi itu, o se facade mo nei gaioiga:

сlass Tippler {
    //...
    void Act(){
        _pourOperation.Do() // налить
        _drinkUpOperation.Do() // выпить
        _takeBiteOperation.Do() // закусить
    }
}

Mataupu Faavae o le Tiutetauave Tasi. E le faigofie e pei ona foliga mai

Aisea?

E tusia e le tagata fai polokalame le code mo le manuki, ma o le manuki e le mafaufau, faavalevalea ma faanatinati i taimi uma. E mafai ona ia uuina ma malamalama e uiga ile 3 - 7 upu ile taimi e tasi.
I le tulaga o se tagata onā, e tolu ia faaupuga. Ae peitaʻi, afai tatou te tusia le code i se laupepa e tasi, ona iai lea o lima, tioata, misa ma finauga e le gata e uiga i faiga faʻapolokiki. Ma o nei mea uma o le ai ai i le tino o le tasi metotia. Ou te mautinoa na e vaʻai i sea code i lau faʻataʻitaʻiga. E le o le suʻega sili ona faʻaletagata mo le mafaufau.

I le isi itu, ua mamanuina le tagata ape e faʻataʻitaʻiina mea moni o le lalolagi i lona ulu. I lona mafaufau, e mafai ona ia tuleia faatasi, faʻapipiʻi mea fou mai ia i latou, ma faʻasese i latou i le auala lava e tasi. Vaai faalemafaufau i se taavale tuai. I ou mafaufauga, e mafai ona e tatalaina le faitotoʻa, tatala le faʻamau faitotoʻa ma vaʻai iina le faʻaogaina o le faamalama, o totonu o le ai ai ni mea faʻaoga. Ae e le mafai ona e vaʻaia vaega uma o le masini i le taimi e tasi, i le tasi "lisi". O le mea sili e le mafai e le "tagata manuki".

O le mea lea, e fa'apipi'i e tagata fai polokalame faiga fa'alavelave i se seti o elemene e le fa'alavelave ma galue. Ae ui i lea, e mafai ona faʻaleagaina i auala eseese: i le tele o taavale tuai, o le ea e alu i totonu o le faitotoʻa, ma i taavale faʻaonaponei, o le toilalo i le loka eletise e taofia ai le afi mai le amataina, lea e mafai ona avea ma faʻafitauli i le taimi o le toe faaleleia.

O lenei, O le SRP o se mataupu faavae o loʻo faʻamatalaina pe faʻafefea ona pala, o lona uiga, o fea e tusi ai le laina vaeluaga.

Fai mai o ia e tatau ona pala e tusa ai ma le mataupu faavae o le vaevaeina o le "tiute," o lona uiga, e tusa ai ma galuega a nisi mea.

Mataupu Faavae o le Tiutetauave Tasi. E le faigofie e pei ona foliga mai

Sei o tatou toe foi i le inu ma le lelei e maua e le manuki i le taimi o le pala:

  • Ua matua'i manino le code i tulaga uma
  • O le code e mafai ona tusia e le tele o tagata fai polokalame i le taimi e tasi (e tusia e le tasi se elemene eseese)
  • E fa'afaigofie le su'ega otometi - o le faigofie o le elemene, o le faigofie fo'i le su'ega
  • O le tuʻufaʻatasiga o le code e aliali mai - e mafai ona e suia DrinkUpOperation i se taotoga e sasaa ai e se tagata onā le vai i lalo o le laulau. Po'o le sui o le liligiina o le gaioiga i se taotoga e fa'afefiloi ai le uaina ma le vai po'o le vodka ma le pia. Faʻalagolago i manaoga pisinisi, e mafai ona e faia mea uma e aunoa ma le paʻi i le code code Tippler.Act.
  • Mai nei gaioiga e mafai ona e gaugau ai le tagata 'ai (fa'aaoga na'o TakeBitOperation), Ava (na'o le fa'aaogaina DrinkUpOperation saʻo mai le fagu) ma faʻafetaui le tele o isi pisinisi manaʻomia.

(Oi, e foliga mai ua leva ona avea lenei ma mataupu faavae o le OCP, ma ua ou solia le matafaioi o lenei pou)

Ma, ioe, o mea leaga:

  • E tatau ona tatou faia nisi ituaiga.
  • O se tagata onā e inu mo le taimi muamua i ni nai itula mulimuli ane nai lo le mea na te faia.

Fa'amatalaga 2. Fetu'aiga fa'atasi.

Fa'atagaina a'u, alii! E tasi foi le matafaioi a le vasega inu - e inu! Ma i se tulaga lautele, o le upu "tiute" o se manatu matua le mautonu. O se tasi e nafa ma le taunuuga o tagata soifua, ma o se tasi e nafa ma le siitiaina o penguins na fuli i luga o le pou.

Sei o tatou mafaufau i faatinoga e lua o le tagata inu. O le mea muamua, o loʻo taʻua i luga, e tolu vasega - sasaa, inu ma meaʻai.

O le lona lua o loʻo tusia e ala i le "Forward and Only Forward" methodology ma o loʻo i ai uma manatu i le metotia Tulafono:

//Не тратьте время  на изучение этого класса. Лучше съешьте печеньку
сlass BrutTippler {
   //...
   void Act(){
        // наливаем
    if(!_hand.TryDischarge(from:_bottle, to:_glass, size:_glass.Capacity))
        throw new OverdrunkException();

    // выпиваем
    if(!_hand.TryDrink(from: _glass,  size: _glass.Capacity))
        throw new OverdrunkException();

    //Закусываем
    for(int i = 0; i< 3; i++){
        var food = _foodStore.TakeOrDefault();
        if(food==null)
            throw new FoodIsOverException();

        _hand.TryEat(food);
    }
   }
}

O nei vasega uma e lua, mai le vaaiga a se tagata matamata i fafo, e foliga tutusa ma tutusa le matafaioi o le "inu".

Le mautonu!

Ona matou o ai lea i luga ole laiga ma su'e se isi fa'auigaga ole SRP - ole Suiga Tulaga Fa'avae.

Fai mai le SCP "O se module e tasi ma na'o le tasi le mafuaaga e sui ai". O lona uiga, "O le matafaioi o se mafuaaga mo suiga."

(E foliga mai o tama na o mai ma le uluaʻi faʻamatalaga sa mautinoa i le telepathic tomai o le tagata ape)

O lea ua sologa lelei mea uma. E ese mai, e mafai ona tatou suia le sasaa, inu ma meaʻai, ae i totonu o le tagata inu lava ia e mafai ona tatou suia le faʻasologa ma le tuʻufaʻatasia o gaioiga, mo se faʻataʻitaʻiga, e ala i le faʻanofoina o meaʻai aʻo leʻi inu pe faʻaopoopo le faitau o se toast.

I le "Faʻasaga i luma ma Naʻo le Luma", o mea uma e mafai ona suia e naʻo le auala e suia ai Tulafono. O lenei mea e mafai ona mafai ona faitau ma aoga pe a itiiti se faʻamatalaga ma e seasea ona suia, ae masani ona iʻu i auala mataʻutia o 500 laina taʻitasi, ma sili atu pe afai-faʻamatalaga nai lo le manaʻomia mo Rusia e auai i le NATO.

Fa'amatalaga 3. Fa'asinomaga o suiga.

E masani ona le malamalama tagata inu pe aisea latou te ala ai i le fale o se isi tagata, poʻo le mea o loʻo i ai a latou telefoni feaveaʻi. Ua o'o i le taimi e fa'aopoopo ai fa'amatalaga auiliili.

Sei o tatou amata fa'amau i le fa'agasologa o le sasaa:

class PourOperation: IOperation{
    PourOperation(ILogger log /*....*/){/*...*/}
    //...
    void Do(){
        _log.Log($"Before pour with {_hand} and {_bottle}");
        //Pour business logic ...
        _log.Log($"After pour with {_hand} and {_bottle}");
    }
}

E ala i le encapsulating i totonu PourOperation, na matou gaoioi ma le poto mai le vaaiga o le matafaioi ma le faʻapipiʻiina, ae o lenei ua matou fenumiai ma le mataupu faavae o le fesuisuiai. I le faaopoopo atu i le taotoga lava ia, lea e mafai ona suia, o le logging lava ia e mafai foi ona suia. E tatau ona e vavae ese ma faia se logger faapitoa mo le faʻagaioiga sasaa:

interface IPourLogger{
    void LogBefore(IHand, IBottle){}
    void LogAfter(IHand, IBottle){}
    void OnError(IHand, IBottle, Exception){}
}

class PourOperation: IOperation{
    PourOperation(IPourLogger log /*....*/){/*...*/}
    //...
    void Do(){
        _log.LogBefore(_hand, _bottle);
        try{
             //... business logic
             _log.LogAfter(_hand, _bottle");
        }
        catch(exception e){
            _log.OnError(_hand, _bottle, e)
        }
    }
}

O le a matauina e le tagata faitau ma'oti LogAfter, Fa'amatalaga I luma и OneError e mafai foi ona suia taʻitoʻatasi, ma, e ala i le faʻatusa ma laasaga muamua, o le a faia ni vasega se tolu: SasaaLoggerI luma, PourLoggerAfter и PourErrorLogger.

Ma manatua e tolu gaioiga mo le tagata inu, e iva a matou vasega logging. O le i'uga, o le li'o inu inu atoa e aofia ai vasega e 14 (!!!).

Hyperbola? E faigata! O se alii manuki ma se grenade decomposition o le a vaeluaina le "liligi" i totonu o se decanter, se ipu malamalama, sasaa faʻagaioia, se auaunaga tuʻuina atu vai, se faʻataʻitaʻiga faʻapitoa o le fetoʻai o molelaʻau, ma mo le kuata e sosoo ai o le a ia taumafai e faʻasaʻo le faʻalagolago e aunoa ma fesuiaiga o le lalolagi. Ma talitonu mai ia te au, o le a ia le taofia.

O le taimi lea ua oo mai ai le toatele i le faaiuga o le SRP o tala faafagogo mai malo piniki, ma o ese e taaalo saimini...

... e aunoa ma le aʻoaʻoina e uiga i le i ai o se faʻamatalaga lona tolu o Srp:

“O loo ta’u mai e le Mataupu Faavae o Tiutetauave Tasi e faapea mea e tutusa ma suiga e tatau ona teuina i se nofoaga e tasi". po'o"O a suiga faʻatasi e tatau ona teuina i se nofoaga e tasi"

O lona uiga, afai tatou te suia le logging o se gaioiga, e tatau ona tatou suia i se nofoaga e tasi.

O se mea taua tele lea - talu ai o faʻamatalaga uma a le SRP o loʻo taʻua i luga na fai mai e tatau ona tuʻimomomoina ituaiga aʻo latou tuʻimomomoina, o lona uiga, latou te tuʻuina atu se "pito i luga" i luga o le tele o le mea, ma o le taimi nei. ua uma ona tatou talanoa e uiga i se "tulaga maualalo" . I se isi faaupuga, E le gata ina manaʻomia e le SRP le "tuʻimomomoina aʻo tuʻimomomoina", ae ia aua foi le soona fai - "aua le tuʻimomomoina mea vavalalata". O le taua tele lea i le va o le sele a Occam ma le tagata ape!

Mataupu Faavae o le Tiutetauave Tasi. E le faigofie e pei ona foliga mai

O lea e tatau ona lelei le lagona o le tagata inu. I le faaopoopo atu i le mea moni e leai se manaʻoga e vaeluaina le IPourLogger logger i ni vasega se tolu, e mafai foi ona tatou tuʻufaʻatasia uma loggers i se tasi ituaiga:

class OperationLogger{
    public OperationLogger(string operationName){/*..*/}
    public void LogBefore(object[] args){/*...*/}       
    public void LogAfter(object[] args){/*..*/}
    public void LogError(object[] args, exception e){/*..*/}
}

Ma afai tatou te faʻaopoopoina se ituaiga fa o faʻagaioiga, o lona uiga o le logging mo ua uma ona saunia. Ma o le tulafono o gaioiga lava ia e mama ma leai se pisapisao tetele.

O se taunuuga, e 5 a matou vasega mo le foia o le faafitauli o le inu:

  • Fa'agaioiga sasaa
  • Ta'aloga inu
  • Fa'agaioiga fa'apipi'i
  • Logger
  • Fa'afale inu

O latou ta'ito'atasi e nafa tonu lava mo le tasi galuega ma e tasi le mafua'aga mo suiga. O tulafono uma e tutusa ma suiga o lo'o tu lata ane.

Faataitaiga moni o le olaga

Na matou tusia se auaunaga mo le resitalaina otometi se tagata b2b. Ma o se auala ATUA na faʻaalia mo laina e 200 o mea tutusa:

  • Alu ile 1C ma fai se tala
  • Faatasi ai ma lenei tala, alu i le module totogi ma fatuina iina
  • Siaki pe o se tala e iai se tala faapena e le'i faia i luga o le server autu
  • Fausia se tala fou
  • Fa'aopoopo fa'ai'uga o le resitaraina i le module totogi ma le numera 1c i le 'au'aunaga i'uga resitala
  • Fa'aopoopo fa'amatalaga tala i lenei laulau
  • Fausia se numera numera mo lenei tagata o tausia ile auaunaga ole togi. Tu'u lau numera 1c account i lenei tautua.

Ma e tusa ma le 10 isi pisinisi pisinisi i luga o lenei lisi ma le mataʻutia fesoʻotaʻiga. Toeitiiti lava o tagata uma e manaʻomia le mea faʻamatalaga. O le ID ID ma le igoa o le tagata o tausia sa manaomia i le afa o telefoni.

Ina ua maeʻa le itula o le toe faʻaleleia, na mafai ona matou vavaeeseina le tulafono faʻavae ma nisi o nuances o le galue ma se teugatupe i ni auala eseese / vasega. O le auala a le Atua na faafaigofieina, ae e 100 laina o le code na totoe e leʻi manaʻo e tatalaina.

Naʻo ni nai aso na faʻamaonia ai o le fatu o lenei auala "mama" o se pisinisi algorithm. Ma o le uluai faʻamatalaga o faʻamatalaga faʻapitoa sa fai si lavelave. Ma o le taumafaiga e talepe lenei auala i ni vaega e soli ai le SRP, ae le o le isi itu.

Faiga aloa'ia.

Ua oo i le taimi e tuu ai na o tatou onana. Faamago ou loimata - e mautinoa lava tatou te toe foi i ai i se aso. Ia tatou fa'atulafonoina le malamalama mai lenei tusiga.

Fa'atulafonoina 1. Fa'amatalaga ole SRP

  1. Vaevae elemene ina ia tofu i latou ma se mea e tasi.
  2. O le matafaioi e tu mo le "mafuaaga e sui." O lona uiga, o elemene taʻitasi e naʻo le tasi le mafuaʻaga mo suiga, i le tulaga o pisinisi pisinisi.
  3. Suiga fa'aletonu i le fa'atatau pisinisi. e tatau ona fa'apitonu'u. O elemene e sui fa'atasi e tatau ona lata ane.

Fa'atulafonoina 2. Ta'iala mo su'ega a le tagata lava ia.

Ou te leʻi vaʻaia ni faʻataʻitaʻiga lava mo le faʻataunuʻuina o le SRP. Ae o loʻo iai tulaga manaʻomia:

1) Fesili ifo ia te oe lava po o le a le mea e fai e lenei vasega/auala/module/au'aunaga. e tatau ona e taliina i se faauigaga faigofie. ( Fa'afetai Brightori )

fa'amatalaga

Ae ui i lea, o nisi taimi e matua faigata lava ona maua se faʻamatalaga faigofie

2) Fa'amauina se pusa po'o le fa'aopoopoina o se mea fou e a'afia ai se numera la'ititi o faila/vasega. Le mea lelei - tasi.

fa'amatalaga

Talu ai ona o le matafaioi (mo se vaega poʻo se pusa) o loʻo faʻapipiʻiina i se faila e tasi / vasega, e te iloa tonu le mea e vaʻai ma mea e faʻasaʻo. Mo se fa'ata'ita'iga: o le fa'aaliga o le suia o le gaosiga o galuega fa'amau e mana'omia ai le suia na'o le logger. E leai se mea e manaʻomia e taʻavale ai i le isi vaega o le code.

O le isi faʻataʻitaʻiga o le faʻaopoopoina o se pulega UI fou, tutusa ma mea muamua. Afai e fa'amalosia oe e fa'aopoopo 10 fa'alapotopotoga 'ese'ese ma 15 fa'aliliuga 'ese'ese, e foliga mai o lo'o e soona fai.

3) Afai o loʻo galulue le tele o atinaʻe i vaega eseese o lau poloketi, o le mea e ono tulaʻi mai ai se feteʻenaʻiga tuʻufaʻatasia, o lona uiga, o le avanoa o le faila / vasega e tasi o le a suia e le tele o atinaʻe i le taimi e tasi, e laʻititi.

fa'amatalaga

Afai, pe a faʻaopoopoina se taotoga fou "Liligi vodka i lalo o le laulau", e tatau ona e aʻafia le logger, le gaioiga o le inu ma le sasaa, ona foliga mai lea o le vaevaeina o tiute. Ioe, e le o taimi uma e mafai ai, ae tatau ona tatou taumafai e faʻaitiitia lenei fuainumera.

4) Pe a fesiligia se fesili faʻamalamalama e uiga i faʻamatalaga pisinisi (mai se atinaʻe poʻo se pule), e te alu saʻo i le tasi vasega / faila ma maua faʻamatalaga mai iina.

fa'amatalaga

Fa'aaliga, tulafono po'o algorithms e tusia fa'atasi, ta'itasi i le nofoaga e tasi, ma e le fa'asalalauina ma fu'a i totonu o le avanoa code.

5) E manino le igoa.

fa'amatalaga

O la tatou vasega po o metotia e nafa ma le mea e tasi, ma o le matafaioi o loʻo atagia i lona igoa

AllManagersManagerService - e foliga mai o se vasega a le Atua
LocalPayment - masalo e leai

Formalism 3. Occam-muamua auala atinae.

I le amataga o le mamanu, e le iloa e le manuki ma e le lagona uma le faʻaogaina o le faʻafitauli o loʻo foia ma mafai ona faia se mea sese. E mafai ona e faia mea sese i auala eseese:

  • Fai ia lapopoa tele e ala i le tuufaatasia o tiutetauave eseese
  • Toe fa'atusaina e ala i le vaevaeina o se matafaioi e tasi i le tele o ituaiga eseese
  • Fa'amatala sese ia tuaoi o le matafaioi

E taua le manatua o le tulafono: "e sili atu le faia o se mea sese tele," poʻo le "afai e te le mautinoa, aua le vaeluaina." Afai, mo se faʻataʻitaʻiga, o lau vasega o loʻo i ai ni tiute se lua, o lona uiga o loʻo malamalama pea ma e mafai ona vaevaeina i ni nai suiga laiti i le code a le kalani. O le fa'apipi'iina o se tioata mai fasi tioata e masani lava ona sili atu ona faigata ona o le fa'asalalauga o lo'o fa'asalalauina i le tele o faila ma le leai o se fa'alagolago mana'omia i le code a le tagata o tausia.

Ua oo i le taimi e taʻua ai o se aso

Ole lautele ole SRP e le gata ile OOP ma le SOLID. E faʻatatau i metotia, galuega, vasega, modules, microservices ma auaunaga. E faʻaoga uma i le "figax-figax-and-prod" ma le "rocket-science" atinaʻe, faʻaleleia atili le lalolagi i soo se mea. Afai e te mafaufau i ai, e toetoe lava o le mataupu faavae autu o inisinia uma. Inisinia faʻainisinia, faiga faʻatonutonu, ma e moni lava faiga faʻalavelave uma e fausia mai vaega, ma o le "underfragmentation" e faʻaumatia ai le au mamanu o le fetuutuunaʻi, "overfragmentation" e faʻateʻaina ai tagata mamanu, ma le le saʻo o tuaoi e le maua ai le mafaufau ma le filemu o le mafaufau.

Mataupu Faavae o le Tiutetauave Tasi. E le faigofie e pei ona foliga mai

O le SRP e leʻo faia e le natura ma e le o se vaega o le saienisi saʻo. E sola ese mai o tatou tapula'a fa'ale-natura ma le mafaufau, ua na'o se auala e pulea ai ma atina'e faiga lavelave e fa'aaoga ai le fai'ai ape-man. Na te ta'u mai ia i tatou le ala e pala ai se faiga. O le uluai faʻatulagaga e manaʻomia ai se tele o telepathy, ae ou te faʻamoemoe o lenei tusiga e faʻamalo nisi o le ulaula.

puna: www.habr.com

Faaopoopo i ai se faamatalaga