Articles

Wehe / pani ʻia, e like me ke kumu SOLID

Pono e wehe i nā hui polokalamu (nā papa, nā modula, nā hana, a pēlā aku.) No ka hoʻonui ʻana, akā pani ʻia no ka hoʻoponopono ʻana.

Ke hoʻolālā nei i ka polokalamu: nā modula, nā papa, a me nā hana i ke ʻano i ka wā e pono ai nā hana hou, ʻaʻole pono mākou e hoʻololi i nā code e kū nei akā e kākau i nā pāʻālua hou e hoʻohana ʻia e ke code i hala. He ʻano ʻē paha kēia, keu hoʻi me nā ʻōlelo e like me Java, C, C ++ a i ʻole C # kahi e pili ai ʻaʻole wale i ke code kumu ponoʻī akā i ka binary. Makemake mākou e hana i nā hiʻohiʻona hou i nā ala i koi ʻole ai i ka hoʻokaʻawale hou ʻana o nā binaries, nā liki, a DLL paha.
OCP ma ka pōʻaiapili SOLID

 

SRP a me OCP kōkua

Ua ʻike mua mākou i ke ʻano SRP o ke kuleana hoʻokahi e ʻōlelo ana he hoʻokahi wale nō kumu e hoʻololi ai i kahi module. Kūpono nā loina OCP a me SRP. ʻO ka pāʻālua i hoʻolālā ʻia e pili ana i ke kumumanaʻo SRP e mahalo i nā kumu OCP. Ke loaʻa iā mākou kahi code hoʻokahi wale nō kumu e loli ai, ka hoʻolauna ʻana i kahi hiʻohiʻona hou e hoʻokumu i kumu kumu no ka hoʻololi. No laila e uhaʻi ʻia ka SRP a me ka OCP. Pēlā nō, inā he code kā mākou e hoʻololi wale ai ke loli kāna hana nui a noho mau ʻole ke hoʻohui ʻia nā hana hou, no laila e pili ana i ka OCP, mahalo nui ia iā SRP pū kekahi.
ʻAʻole ia he kumu e alakaʻi mau ana ʻo SRP i OCP a i ʻole ka hope, akā i ka hapanui o nā hihia inā pili ʻia kekahi o lākou, maʻalahi ka loaʻa ʻana o ka lua.

 

ʻO kahi laʻana o ka hana hewa i ke kumu OCP

Mai kahi ʻike ʻenehana wale nō, maʻalahi ka Maʻamau Open / Closed. ʻO kahi pilina maʻalahi ma waena o ʻelua mau papa, e like me ka mea ma lalo, e uhaʻi i ke kumu OCP.

Hoʻohana pololei ka mea hoʻohana i ka papa Logic. Inā pono mākou e hoʻokō i kahi papa Logic ʻelua i kahi ala e hiki ai iā mākou ke hoʻohana i nā mea o kēia manawa a me ka mea hou, pono e hoʻololi i ka papa Logic e kū nei. Hoʻopili pololei ka mea hoʻohana i ka hoʻokō ʻana o ka noʻonoʻo, ʻaʻohe ala no mākou e hoʻolako i kahi loiloi hou me ka ʻole o ka hopena o kēia wā. A ke kamaʻilio mākou e pili ana i nā ʻōlelo statically typed, hiki i ka papa mea hoʻohana ke koi aku i nā loli pū kekahi. Inā mākou e kamaʻilio e pili ana i nā ʻōlelo i hōʻuluʻulu ʻia, ʻoiaʻiʻo e hiki i ka mea hoʻohana ke hoʻokō a me ka Logic i hoʻokō ʻia a i ʻole ka hale waihona puke hōʻeuʻeu e koi i ka recompilation a me ka lawe ʻana, ʻoi aku ka maikaʻi e hōʻole inā hiki.

Me ke kuhikuhi ʻana i ka papahana ma mua, hiki iā mākou ke hōʻemi i kēlā me kēia papa e hoʻohana pololei i kahi papa ʻē aʻe, hiki ke alakaʻi i ka hana hewa i ke kumu Open / Closed. 
E manaʻo mākou makemake mākou e kākau i kahi papa i hiki ke hāʻawi i ka holomua "i ka pākēneka" o kahi faila i hoʻoiho ʻia, ma o kā mākou noi. ʻElua mau papa nui e loaʻa iā mākou, kahi holomua a me kahi faila, a ke manaʻo nei wau makemake mākou e hoʻohana iā lākou penei:

 

hana hōʻikeItCanGetTheProgressOfAFileAsAPercent () {
     $ faile = Kōnae hou ();
     $ faile-> loa = 200;
     $ faile-> hoʻouna = 100;
     $ holomua = holomua hou ($ faile);
     $ kēia-> assertEquals (50, $ holomua-> getAsPercent ());
}

I kēia code he poʻe hoʻohana mākou i ka holomua. Makemake mākou e kiʻi i kahi waiwai ma ke ʻano he pākēneka, me ka nānā ʻole i ka nui o ka faila maoli. Hoʻohana mākou i ka faile ma ke ʻano he ʻike. Loaʻa ka lōʻihi o kahi faila ma nā bytes a me kahi kahua i kapa ʻia i hoʻouna ʻia e hōʻike ana i ka nui o ka ʻike i hoʻouna ʻia i ka mea hoʻoiho. ʻAʻole mālama iā mākou pehea e hoʻonui ai kēia mau waiwai i ka noi. Hiki iā mākou ke kuhi aia kekahi hana hoʻokalakupua e hana nei i kēia na mākou, no laila i kahi hoʻokolohua hiki iā mākou ke hoʻonohonoho kikoʻī iā lākou.

 

Kōnae papa {
     lehulehu $ lōʻihi;
     lehulehu $ hoounaia;
}

 

ʻO ka papa Kōnae kahi mea ʻikepili maʻalahi wale nō i loko o nā kahua ʻelua. Pono e komo pū kekahi mau ʻike ʻē aʻe a me nā ʻano, e like me filename, ala, ala pili, papa kuhikuhi o kēia manawa, ʻano, nā ʻae, a pēlā aku.

 

holomua papa {

     waihona $ pilikino;

     hana __construct (File $ faile) {
          $ kēia-> faila = $ faile;
     }

     hana getAsPercent () {
          hoʻihoʻi $ kēia-> faila-> i hoʻouna ʻia * 100 / $ kēia-> faile-> lōʻihi;
     }

}

ʻO ka holomua kahi papa e ʻae i kahi faila i kāna mea kūkulu. No ka maopopo, ua kuhikuhi mākou i ka ʻano loli i nā palena kūkulu. Aia kahi ala pono hoʻokahi ma ka Holomua, getAsPercent (), kahi e lawe i nā waiwai i hoʻouna ʻia a me ka lōʻihi mai File a hoʻolilo iā lākou i pākēneka. Simple a hana ia.

Kuhi paha kēia kuhi, akā haki ia i ke kumu Open / Closed.

Akā no ke aha?

A pehea?

 

E hoʻāʻo e hoʻololi i nā koina

Pono kēlā me kēia noi e ulu ma kahi o ka manawa i nā hiʻohiʻona hou. Hiki i kahi hiʻohiʻona hou no kā mākou noi ke ʻae i ke kahe mele ma kahi o ka hoʻoiho ʻana i nā faile. Hōʻike ʻia ka lōʻihi o ka faile ma nā bytes, ka lōʻihi o ke mele i kekona. Makemake mākou e hāʻawi i kahi pā holomua i kā mākou poʻe hoʻolohe, akā hiki iā mākou ke hoʻohana hou i ka papa i kākau ʻia ma luna?

ʻAʻole hiki iā mākou ke hiki. Hoʻopili ʻia kā mākou holomua i File. Hiki iā ia ke mālama i ka ʻike faila, ʻoiai hiki ke hoʻohana ʻia i ka ʻike mele. Akā e hana i kēlā mea pono mākou e hoʻololi ia, pono mākou e hoʻomaopopo i ka holomua i ka mele a me nā faila. Inā hoʻokō kā mākou hoʻolālā me OCP, ʻaʻole pono mākou e hoʻopā i ka faile a i ʻole ka holomua. Hiki iā mākou ke hoʻohana hou i ka holomua a noi iā ia i nā mele.

 

Nupepa hou
Mai poina i ka nūhou nui loa e pili ana i ka hana hou. E kākau inoa e loaʻa iā lākou ma ka leka uila.

Ka hopena hiki

Loaʻa ka maikaʻi o nā ʻōlelo i kikokiko ʻia i ka mālama ʻana i nā ʻano mea i ka manawa holo. ʻAe kēia iā mākou e hemo i ka typehint mai ka mea kūkulu holomua a e hoʻomau ka hana o ke code.

holomua papa {

     waihona $ pilikino;

     hana __construct ($ faile) {
         $ kēia-> faila = $ faile;
     }

    hana getAsPercent () {
         hoʻihoʻi $ kēia-> faila-> i hoʻouna ʻia * 100 / $ kēia-> faile-> lōʻihi;
     }

}

Hiki iā mākou ke hoʻolana i kekahi mea ma Holomua. A i kekahi mea, manaʻo wau i kekahi mea:

papa mele {

lehulehu $ lōʻihi;
lehulehu $ hoounaia;

lehulehu $ artist;
lehulehu $ album;
lehulehu $ hoʻokuʻuDate;

hana kiʻiAlbumCoverFile () {
hoʻihoʻi 'Nā kiʻi / Nā uhi /'. $ kēia-> mea pena kiʻi. '/'. $ kēia-> album. '.png';
}
}

A ʻo ka papa Mele e like me ka mea ma luna e holo pono. Hiki iā mākou ke hoʻāʻo maʻalahi iā ia me kahi hōʻike like loa me File.
hana hōʻikeItCanGetTheProgressOfAMusicStreamAsAPercent () {
$ mele = Mele hou ();
$ mele-> loa = 200;
$ mele-> hoʻouna = 100;

$ holomua = holomua hou ($ mele);

$ kēia-> assertEquals (50, $ holomua-> getAsPercent ());
}

No laila hiki ke hoʻohana ʻia i kahi ʻike i ana ʻia me ka papa Holomua. E hoʻokau paha iā ia i ke code ma ka hoʻololi ʻana i ka inoa loli.

holomua papa {

pilikino $ hiki ke ana

hana __construct ($ hiki ke ana ʻike ʻia) {
$ kēia-> hiki ke ana helu = $ hiki ke ana ʻia Contont;
}

hana getAsPercent () {
hoʻihoʻi $ kēia-> hiki ke ana Content-> hoʻouna ʻia * 100 / $ kēia-> anaContent-> lōʻihi;
}

}

Ke kuhikuhi mākou i ka faile ma ke ʻano typehint, manaʻo mākou e pili ana i ka mea a kā mākou papa e mālama ai. Ua maopopo a inā hele mai kekahi mea ʻē aʻe, e haʻi mai kahi kuhi hewa nui iā mākou.

Upapa e hoʻokahuli i kahi hana o ka papa kumu i hoʻohanohano ʻole ʻia ka ʻaelike papa kumu e ka papa i lawe ʻia. 

ʻAʻole mākou makemake e hoʻopau i ka hoʻāʻo ʻana e kāhea i nā kiʻina a i ʻole ke komo ʻana i nā kahua i nā mea i kū ʻole i kā mākou ʻaelike. I ka manawa i loaʻa iā mākou kahi typehint, ua hōʻike ʻia ka ʻaelike e ia. Nā kahua a me nā ʻano o ka papa Kōnae. I kēia manawa ʻaʻohe a mākou mea, hiki iā mākou ke hoʻouna i kekahi mea, ʻo ke aho a he hopena maikaʻi ʻole paha ia.

ʻOiai ua like ka hopena hopena ma nā hihia ʻelua, ʻo ia hoʻi ka haki ʻana o ke code, ua hoʻopuka ka mea mua i kahi leka maikaʻi. He pouli loa nae keia. ʻAʻohe ala e ʻike ai i ke ʻano o ka loli – he kaula i kā mākou hihia – a he aha nā waiwai i ʻimi ʻia a ʻaʻole i loaʻa. He paʻakikī ke hoʻopau a hoʻoponopono i ka pilikia. Pono ka mea papahana e wehe i ka papa Progress, heluhelu a hoʻomaopopo. ʻO ka ʻaelike, i kēia hihia, inā ʻaʻole ʻoe e wehewehe i ka typehint, ʻo ia defihoʻopau ʻia e ke ʻano o ka Holomua. He ʻaelike i kuhi ʻia i ʻike wale ʻia e Progress. I kā mākou laʻana, ʻo ia defiHoʻopau ʻia ma ke komo ʻana i nā kahua ʻelua, hoʻouna ʻia a me ka lōʻihi, ma ke ala getAsPercent(). Ma ke ola maoli, hiki ke paʻakikī a paʻakikī ke ʻike ʻia ka ʻaelike i ʻōlelo ʻia ma ka ʻimi wale ʻana i kekahi mau kekona ma ka papa.

Paipai wale ʻia kēia hopena inā ʻaʻole hiki ke hoʻokō maʻalahi ʻia kekahi o nā ʻōlelo aʻoaʻo ʻē aʻe ma lalo a i ʻole inā e hoʻokau lākou i nā loli kūloko i kū ʻole i ka hana.

Ercole Palmeri

Nupepa hou
Mai poina i ka nūhou nui loa e pili ana i ka hana hou. E kākau inoa e loaʻa iā lākou ma ka leka uila.

Nā nūpepa hou

Hoʻokiʻekiʻe ʻo UK antitrust regulator i BigTech alarm ma luna o GenAI

Ua hoʻopuka ka UK CMA i kahi ʻōlelo aʻo e pili ana i ka hana a Big Tech i ka mākeke naʻauao. Aia…

18ʻApelila 2024

ʻO Casa Green: hoʻololi i ka ikehu no ka wā e hiki mai ana ma Italia

ʻO ka "Case Green" Decree, i hoʻokumu ʻia e ka European Union e hoʻonui ai i ka ikehu o nā hale, ua hoʻopau i kāna kaʻina hana kānāwai me…

18ʻApelila 2024

Ecommerce ma Italia ma + 27% e like me ka hōʻike hou e Casaleggio Associati

Hōʻike ʻia ka hōʻike makahiki a Casaleggio Associati ma Ecommerce ma Italia. Hōʻike i kapa ʻia ʻo "AI-Commerce: nā palena o Ecommerce me Artificial Intelligence".…

17ʻApelila 2024

Manaʻo Brilliant: Hāʻawi ʻo Bandalux iā Airpure®, ka pale e hoʻomaʻemaʻe i ka ea

ʻO ka hopena o ka hana ʻenehana mau a me ka kūpaʻa i ke kaiapuni a me ka pono o nā kānaka. Hāʻawi ʻo Bandalux iā Airpure®, kahi hale lole…

12ʻApelila 2024