Coupling vs Cohesion
Kev sib txuas thiab kev sib koom ua ke yog ob lub ntsiab lus pom hauv Java (thiab tag nrho lwm yam lus taw qhia). Coupling ntsuas ntau npaum li cas txhua qhov kev pab cuam modules nyob ntawm lwm qhov kev pab cuam modules. Cohesion ntsuas qhov ua tau zoo npaum li cas ntawm txhua qhov haujlwm muaj feem cuam tshuam hauv ib qho module. Qhov tseeb, txhua yam lus taw qhia (xws li Java) muaj ob lub hom phiaj tseem ceeb ntawm kev ua kom muaj kev sib koom ua ke thiab txo qhov sib txuas ntawm tib lub sijhawm, txhawm rau txhim kho cov haujlwm tau zoo tshaj plaws. Ob qhov kev ntsuas software engineering no tau tsim los ntawm Larry Constantine kom txo tus nqi ntawm kev hloov kho thiab tswj software.
Kev sib haum xeeb yog dab tsi?
Cohesion ntsuas qhov ua tau zoo npaum li cas ntawm txhua txoj haujlwm muaj feem cuam tshuam hauv qhov kev zov me nyuam. Cov chav kawm zoo tsim ua rau muaj kev sib koom ua ke zoo heev. Yog hais tias ib chav kawm tab tom ua ib pawg ntawm cov haujlwm muaj feem cuam tshuam, chav kawm ntawd tau hais tias yuav sib koom ua ke. Ntawm qhov tod tes, yog tias ib chav kawm tau ua ntau pawg ntawm cov haujlwm tsis sib xws uas txhais tau tias chav kawm tsis sib koom ua ke. Nws yog ib qho tseem ceeb kom nkag siab tias tsis muaj cohesiveness tsis txhais hais tias tag nrho daim ntawv thov tsis muaj yuav tsum functionality. Nws tsuas yog tias tsis muaj kev sib koom ua ke, nws yuav nyuaj heev rau kev tswj hwm kev ua haujlwm vim tias lawv yuav tawg mus rau ntau qhov chaw tsis ncaj ncees lawm vim qhov nyuaj ntawm daim ntawv thov nce ntxiv rau lub sijhawm. Kev tuav tswj, hloov kho thiab nthuav tawm tus cwj pwm txawv txav thoob plaws hauv txoj cai yog qhov nyuaj heev txawm tias cov neeg ua haujlwm paub ntau tshaj plaws.
Kev sib txuas yog dab tsi?
Coupling ntsuas ntau npaum li cas txhua qhov kev pab cuam modules nyob ntawm lwm qhov kev pab cuam modules. Kev sib cuam tshuam ntawm ob yam khoom tshwm sim vim muaj kev sib txuas. Loosely-coupled cov kev pab cuam muaj siab nyob rau hauv yooj thiab extensibility. Kev sib txuas muaj zog tsis yog qhov zoo vim tias ib qho khoom tuaj yeem ua rau muaj kev vam khom rau qee yam khoom. Qhov no yog npau suav phem thaum tus lej hloov kho, vim tias qhov sib txuas siab txhais tau hais tias cov programmer yuav tsum tau ua haujlwm ntawm ntau qhov chaw ntawm code rau ib qho kev hloov pauv tus cwj pwm. Kev sib txuas muaj zog ib txwm ua rau cov kev pab cuam uas tsis tshua muaj kev yooj yim thiab tsawg dua scalability / extensibility. Txawm li cas los xij, hauv cov lus programming zoo li Java, kom zam kev sib txuas yog ua tsis tau. Tab sis nws raug pom zoo tias cov programmers muab lawv qhov zoo tshaj plaws kev rau siab los txo cov coupling kom ntau li ntau tau. Nws kuj tseem muaj peev xwm muaj qee qhov sib txuas los pab cov khoom sib cuam tshuam nrog ib leeg yam tsis muaj kev cuam tshuam nws txoj kev ua kom muaj zog thiab yoog raws.
Qhov txawv ntawm Coupling thiab Cohesion yog dab tsi?
Txawm hais tias kev sib txuas thiab kev sib koom ua ke nrog qhov zoo ntawm cov qauv hauv software engineering, lawv yog cov ntsiab lus sib txawv. Cohesion tham txog ntau npaum li cas cov functionality muaj feem xyuam rau ib leeg nyob rau hauv lub module, thaum coupling deals nrog ntau npaum li cas ib module yog nyob ntawm lwm yam kev pab cuam modules nyob rau hauv tag nrho daim ntawv thov. Txhawm rau kom muaj qhov zoo tshaj plaws software, cohesion thiab coupling yuav tsum ncav cuag ob qhov kawg ntawm lawv cov spectrums. Hauv lwm lo lus, xoob coupling thiab muaj zog cohesion muab cov software zoo tshaj plaws. Muaj cov chaw ntiag tug, cov chav kawm tsis yog pej xeem thiab cov txheej txheem ntiag tug muab cov kev sib txuas xoob, thaum ua rau txhua tus tswv cuab pom hauv chav kawm thiab muaj pob khoom raws li qhov pom tau tias muaj kev sib koom siab siab.