Pa dakò pou devlope yon bagay ou pa konprann

Pa dakò pou devlope yon bagay ou pa konprann

Depi kòmansman ane 2018 la, mwen te kenbe pozisyon dirijan / bòs / devlopè plon nan ekip la - rele li sa ou vle, men pwen an se ke mwen se antyèman responsab pou youn nan modil yo ak pou tout devlopè yo ki travay. sou li. Pozisyon sa a ban mwen yon nouvo pèspektiv sou pwosesis devlopman an, kòm mwen patisipe nan plis pwojè ak plis patisipe aktivman nan pran desizyon. Dènyèman, gras a de bagay sa yo, mwen toudenkou reyalize konbyen mezi konpreyansyon yo afekte kòd la ak aplikasyon an.

Pwen mwen vle fè se ke bon jan kalite a nan kòd la (ak pwodwi final la) se byen ki gen rapò ak ki jan konsyan moun yo ki ap desine ak ekri kòd la yo nan sa yo ap fè.

Ou gendwa ap panse kounye a, “Mèsi, Cap. Natirèlman, li ta bon pou w konprann sa w ap ekri an jeneral. Sinon, ou ta ka anboche yon gwoup makak pou frape kle abitrè epi kite l konsa." Epi ou gen rezon absoliman. An konsekans, mwen pran li pou akòde ke ou reyalize ke gen yon lide jeneral sou sa w ap fè li nesesè. Sa a ka rele nivo zewo nan konpreyansyon, epi nou pa pral analize li an detay. Nou pral gade an detay sou sa egzakteman ou bezwen konprann ak ki jan li afekte desizyon ou pran chak jou. Si mwen te konnen bagay sa yo davans, li ta sove m 'anpil tan gaspiye ak kòd dout.

Malgre ke ou pa pral wè yon sèl liy nan kòd anba a, mwen toujou kwè ke tout sa ki di isit la gen anpil enpòtans pou ekri bon jan kalite, kòd ekspresyon.

Premye nivo konpreyansyon: Poukisa li pa travay?

Devlopè yo anjeneral rive nan nivo sa a byen bonè nan karyè yo, pafwa menm san okenn èd nan men lòt moun - omwen nan eksperyans mwen. Imajine ke ou te resevwa yon rapò ensèk: kèk fonksyon nan aplikasyon an pa travay, li bezwen yo dwe fiks. Ki jan ou pral kontinye?

Konplo estanda a sanble sa a:

  1. Jwenn moso kòd ki lakòz pwoblèm nan (ki jan fè sa a se yon sijè apa, mwen kouvri li nan liv mwen an sou kòd eritaj)
  2. Fè chanjman nan snippet sa a
  3. Asire w ke ensèk la fikse epi pa gen okenn erè retou ki fèt

Koulye a, kite a konsantre sou dezyèm pwen an - fè chanjman nan kòd la. Gen de apwòch nan pwosesis sa a. Premye a se fouye nan sa egzakteman k ap pase nan kòd aktyèl la, idantifye erè a epi ranje li. Dezyèm: deplase pa santi - ajoute, di, +1 nan yon deklarasyon kondisyonèl oswa bouk, wè si fonksyon an ap travay nan senaryo a vle, Lè sa a, eseye yon lòt bagay, ak sou sa ad infinitum.

Premye apwòch la kòrèk. Jan Steve McConnell eksplike nan liv li a Code Complete (ki mwen trè rekòmande, an reyalite), chak fwa nou chanje yon bagay nan kòd la, nou ta dwe kapab predi ak konfyans ki jan li pral afekte aplikasyon an. Mwen site nan memwa, men si yon bugfix pa travay nan fason ou te espere, ou ta dwe trè alam epi ou ta dwe kesyone tout plan aksyon ou.

Pou rezime sa ki te di yo, yo nan lòd yo fè yon bon ranje ensèk ki pa degrade bon jan kalite a nan kòd la, ou bezwen konprann tou de estrikti a tout antye nan kòd la ak sous la nan pwoblèm espesifik.

Dezyèm nivo konpreyansyon: Poukisa li travay?

Nivo sa a konprann anpil mwens entwitif pase youn anvan an. Mwen menm, pandan ke mwen toujou yon pwomotè inisyasyon, te aprann li gras a bòs nan travay mwen an, epi imedyatman repete eksplike sans nan pwoblèm nan fèk vini.

Fwa sa a, ann imajine ke ou te resevwa de rapò ensèk alafwa: premye a se sou senaryo A, dezyèm lan se sou senaryo B. Nan tou de senaryo, yon bagay mal rive. An konsekans, ou atake premye ensèk la an premye. Sèvi ak prensip nou devlope pou konpreyansyon Nivo XNUMX yo, ou fouye byen nan kòd ki gen rapò ak pwoblèm nan, konnen poukisa li lakòz aplikasyon an konpòte yo jan li fè nan Senaryo A, epi fè ajisteman rezonab ki pwodui rezilta ou vle a. . Tout bagay ap mache byen.

Lè sa a, ou ale nan senaryo B. Ou repete senaryo a nan yon tantativ pwovoke yon erè, men-sipriz! - Koulye a, tout bagay ap travay jan li ta dwe. Pou konfime devine ou, ou defèt chanjman ou te fè pandan w ap travay sou ensèk A, epi ensèk B retounen. Ensèk ou a rezoud tou de pwoblèm yo. Chans!

Ou pat konte sou sa ditou. Ou te vini ak yon fason yo ranje erè a nan senaryo A epi ou pa gen okenn lide poukisa li te travay pou senaryo B. Nan etap sa a, li trè tante panse ke tou de travay yo te konplete avèk siksè. Sa a se byen lojik: pwen an se te elimine erè, pa t '? Men, travay la poko fini: ou toujou oblije konnen poukisa aksyon ou yo te korije erè a nan senaryo B. Poukisa? Paske li ka ap travay sou prensip yo move, epi Lè sa a, w ap bezwen chèche yon lòt fason soti. Men kèk egzanp nan ka sa yo:

  • Piske solisyon an pa te pwepare a erè B, pran tout faktè an kont, ou ka gen enkonsyaman kase fonksyon C.
  • Li posib ke gen tou yon twazyèm ensèk kache yon kote, ki gen rapò ak menm fonksyon an, epi bugfix ou a depann de li pou operasyon an kòrèk nan sistèm nan nan senaryo B. Tout bagay sanble bon kounye a, men yon jou, twazyèm ensèk sa a pral remake epi yo fikse. Lè sa a, nan senaryo B erè a pral rive ankò, epi li bon si sèlman la.

Tout bagay sa a ajoute dezòd nan kòd la epi yo pral yon jou tonbe sou tèt ou - gen plis chans nan moman ki pi inoportun. Ou pral oblije rasanble volonte w pou fòse tèt ou pou w pase tan konprann poukisa tout bagay sanble ap mache, men li vo li.

Twazyèm nivo konpreyansyon: Poukisa li travay?

Insight resan mwen an gen rapò jisteman ak nivo sa a, epi li se pwobableman youn nan ki ta ban m 'pi benefis la si mwen te vini nan lide sa a pi bonè.

Pou fè li pi klè, ann gade nan yon egzanp: modil ou a bezwen fè konpatib ak fonksyon X. Ou pa patikilyèman abitye ak fonksyon X, men yo te di ou ke yo dwe konpatib ak li ou bezwen sèvi ak kad la F. Lòt modil ki entegre ak X travay egzakteman avè l.

Kòd ou a pa te an kontak ak kad F a ditou depi premye jou nan lavi li, kidonk aplike li pa pral tèlman fasil. Sa a pral gen konsekans grav pou kèk pati nan modil la. Sepandan, ou lage tèt ou nan devlopman: ou pase semèn ekri kòd, tès, woule soti vèsyon pilòt, jwenn fidbak, ranje erè regresyon, dekouvri konplikasyon enprevi, pa respekte dat limit yo te dakò orijinal yo, ekri kèk lòt kòd, tès, jwenn kominikasyon fidbak, korije erè regresion - tout bagay sa yo nan lòd yo aplike fondasyon an F.

Ak nan kèk pwen ou toudenkou reyalize - oswa petèt tande yon moun - ke petèt kad F pa pral ba ou konpatibilite ak karakteristik X. Petèt tout tan sa a ak efò yo te mete nan konplètman mal nan sa.

Yon bagay ki sanble te rive yon fwa pandan m ap travay sou yon pwojè mwen te responsab. Poukisa sa te rive? Paske mwen pa t konprann sa fonksyon X te ye ak kijan li te gen rapò ak kad F. Kisa mwen ta dwe fè? Mande moun k ap bay travay devlopman an pou l eksplike klèman fason aksyon an te gen entansyon mennen nan rezilta yo vle a, olye ke senpleman repete sa yo te fè pou lòt modil yo oswa pran pawòl yo pou li ke se sa karakteristik X bezwen fè.

Eksperyans pwojè sa a te anseye m pou m refize kòmanse pwosesis devlopman jiskaske nou gen yon konpreyansyon klè sou poukisa yo mande nou fè sèten bagay. Refize kareman. Lè ou resevwa yon travay, premye enpilsyon an se imedyatman pran sou li pou pa pèdi tan. Men, politik "jele pwojè a jiskaske nou antre nan tout detay yo" ka diminye tan gaspiye pa lòd nan grandè.

Menm si yo eseye mete presyon sou ou, fòse ou kòmanse travay, byenke ou pa konprann rezon ki fè sa a, reziste. Premyèman, konnen poukisa yo ba w yon travay konsa, epi deside si sa a se chemen ki dwat nan objektif la. Mwen te oblije aprann tout bagay sa yo nan fason difisil - mwen espere egzanp mwen an pral rann lavi pi fasil pou moun ki li sa a.

Katriyèm nivo konpreyansyon: ???

Gen toujou plis aprann nan pwogramasyon, e mwen kwè mwen te sèlman grate sifas sijè a nan konpreyansyon. Ki lòt nivo konpreyansyon ou dekouvri pandan plizyè ane travay ak kòd? Ki desizyon ou te pran ki te gen yon enpak pozitif sou kalite kòd la ak aplikasyon an? Ki desizyon ki te vin mal e ki te anseye w yon leson ki gen anpil valè? Pataje eksperyans ou nan kòmantè yo.

Sous: www.habr.com

Add nouvo kòmantè