An cosán chun clóscríobh a dhéanamh ar 4 mhilliún líne de chód Python. Cuid 3

Cuirimid i láthair d’aird an tríú cuid den aistriúchán ar ábhar faoin gcosán a ghlac Dropbox agus córas seiceála cineál do chód Python á chur i bhfeidhm.

An cosán chun clóscríobh a dhéanamh ar 4 mhilliún líne de chód Python. Cuid 3

→ Páirteanna roimhe seo: ar dtús и an dara

4 mhilliún líne de chód clóscríofa a bhaint amach

Dúshlán mór eile (agus an dara cás imní is coitianta i measc na ndaoine a ndearnadh suirbhé orthu go hinmheánach) ná an méid cód a bhí clúdaithe ag seiceálacha cineáil in Dropbox a mhéadú. Bhaineamar triail as go leor cineálacha cur chuige chun an fhadhb seo a réiteach, ó mhéadú go nádúrtha ar mhéid an bhunachair chóid chlóscríofa go dtí iarrachtaí na foirne mypy a dhíriú ar thátal uathoibrithe statach agus dinimiciúil. Sa deireadh, ba chosúil nach raibh aon straitéis buaiteach shimplí ann, ach bhíomar in ann fás tapa a bhaint amach ar líon na gcód anótáilte trí go leor cineálacha cur chuige a chomhcheangal.

Mar thoradh air sin, tá beagnach 4 mhilliún líne de chód anótáilte ag ár stór Python is mó (le cód inneall). Críochnaíodh an obair ar chlóscríobh cóid statach i thart ar thrí bliana. Tacaíonn Mypy anois le cineálacha éagsúla tuairiscí clúdaigh cód a fhágann go bhfuil sé níos éasca monatóireacht a dhéanamh ar dhul chun cinn clóscríofa. Go háirithe, is féidir linn tuairiscí ar chód a ghiniúint le débhríochtaí i gcineálacha, amhail, mar shampla, úsáid shainráite de chineál Any i nótaí nach féidir a fhíorú, nó le rudaí mar leabharlanna tríú páirtí a iompórtáil nach bhfuil nótaí cineáil acu. Mar chuid de thionscadal chun cruinneas seiceáil cineáil a fheabhsú i Dropbox, chuireamar le feabhas a chur ar na sainmhínithe cineáil (stub comhaid mar a thugtar orthu) do roinnt leabharlann foinse oscailte a bhfuil tóir orthu i stór lárnach Python. clóscríofa.

Chuireamar i bhfeidhm (agus caighdeánaithe i PEPanna ina dhiaidh sin) gnéithe nua den chóras cineáil a cheadaíonn cineálacha níos cruinne do roinnt patrúin Python ar leith. Is sampla suntasach de seo TypeDict, a sholáthraíonn cineálacha d'fhoclóirí cosúil le JSON a bhfuil sraith seasta de eochracha teaghrán acu, gach ceann acu le luach dá chineál féin. Leanfaimid orainn ag leathnú an chórais cineáil. Is dócha gurb é an chéad chéim eile atá againn ná an tacaíocht do chumais uimhriúla Python a fheabhsú.

An cosán chun clóscríobh a dhéanamh ar 4 mhilliún líne de chód Python. Cuid 3
Líon línte an chóid anótáilte: freastalaí

An cosán chun clóscríobh a dhéanamh ar 4 mhilliún líne de chód Python. Cuid 3
Líon línte an chóid anótáilte: cliant

An cosán chun clóscríobh a dhéanamh ar 4 mhilliún líne de chód Python. Cuid 3
Líon iomlán línte an chóid anótáilte

Seo forbhreathnú ar phríomhghnéithe na rudaí a rinne muid chun an méid cód anótáilte in Dropbox a mhéadú:

Déine anótála. Mhéadaigh muid na ceanglais maidir le déine an chóid nua a anótáil de réir a chéile. Thosaigh muid le leideanna linter a mhol nótaí a chur le comhaid a raibh roinnt nótaí acu cheana féin. Teastaíonn nótaí cineáil uainn anois i gcomhaid nua Python agus i bhformhór na gcomhad atá ann cheana féin.

Tuarascálacha a chlóscríobh. Seolaimid tuarascálacha seachtainiúla chuig foirne ar an leibhéal clóscríofa ina gcód agus tugaimid comhairle ar cad ba cheart a bheith anótáilte ar dtús.

Popularization de mypy. Labhraímid faoi mypy ag imeachtaí agus labhraímid le foirne chun cabhrú leo tosú le nótaí cineáil.

Pobalbhreith. Déanaimid suirbhéanna tréimhsiúla ar úsáideoirí chun fadhbanna móra a aithint. Táimid réidh le dul i bhfad chun na fadhbanna seo a réiteach (fiú teanga nua a chruthú chun mypy a bhrostú!).

Feidhmíocht. Tá feabhas mór tagtha ar fheidhmíocht mypy trí úsáid a bhaint as an deamhan agus mypyc. Rinneadh é seo chun na míchaoithiúlachtaí a thagann chun cinn le linn an phróisis anótála a réiteach, agus chun a bheith in ann oibriú le méideanna móra cód.

Comhtháthú le heagarthóirí. Tá uirlisí tógtha againn chun tacú le rith mypy in eagarthóirí a bhfuil tóir orthu ar Dropbox. Áirítear leis seo Cód PyCharm, Vim agus VS. Shimpligh sé seo go mór an próiseas chun an cód a anótáil agus a fheidhmiúlacht a sheiceáil. Bíonn na cineálacha gníomhartha seo coitianta nuair a bhíonn cód reatha á anótáil.

Anailís statach. Chruthaíomar uirlis chun sínithe feidhm a bhaint as uirlisí statacha anailíse. Ní féidir leis an uirlis seo oibriú ach i gcásanna réasúnta simplí, ach chabhraigh sé linn ár gclúdach cineáil cóid a mhéadú gan mórán iarrachta.

Tacaíocht do leabharlanna tríú páirtí. Úsáideann go leor dár dtionscadail foireann uirlisí SQLAlchemy. Baineann sé leas as cumais dhinimiciúla Python nach bhfuil cineálacha PEP 484 in ann a shamhaltú go díreach. Chruthaíomar, de réir PEP 561, an stubchomhad comhfhreagrach agus scríobhamar breiseán le haghaidh mypy (Foinse oscailte), a fheabhsaíonn tacaíocht SQLAlchemy.

Deacrachtaí a bhí againn

Ní raibh an cosán go dtí 4 mhilliún líne de chód clóscríofa éasca dúinn i gcónaí. Ar an gcosán seo thángamar ar go leor potholes agus rinneamar roinnt botún. Seo cuid de na fadhbanna a bhí againn. Tá súil againn go gcabhróidh insint fúthu le daoine eile fadhbanna comhchosúla a sheachaint.

Comhaid ar iarraidh. Chuireamar tús lenár gcuid oibre trí líon beag comhad a sheiceáil. Níor seiceáladh aon rud nach bhfuil san áireamh sna comhaid seo. Cuireadh comhaid leis an liosta scanadh nuair a bhí na chéad nótaí le feiceáil iontu. Má allmhairíodh rud éigin ó mhodúl atá suite lasmuigh de raon feidhme an fhíoraithe, ansin bhíomar ag caint faoi oibriú le luachanna cosúil le Any, nár tástáladh ar chor ar bith. Mar thoradh air seo bhí caillteanas suntasach ar chruinneas clóscríofa, go háirithe sna céimeanna tosaigh den imirce. D'oibrigh an cur chuige seo thar a bheith iontach go dtí seo, cé go bhfuil gnáth-staid ann nuair a léirítear fadhbanna i gcodanna eile den bhunachar cód nuair a chuirtear comhaid le scóip an athbhreithnithe. Sa chás is measa, nuair a rinneadh dhá réimse scoite de chód a chumasc, ina ndearnadh seiceáil ar chineálacha cheana féin, go neamhspleách ar a chéile, d'éirigh sé amach nach raibh cineálacha na réimsí seo ag luí lena chéile. Mar thoradh air sin b'éigean go leor athruithe a dhéanamh ar na nótaí. Ag breathnú siar anois, tuigimid gur chóir go mbeadh croí-mhodúil leabharlainne curtha le limistéar seiceála cineál mypy níos luaithe againn. Dhéanfadh sé seo ár gcuid oibre i bhfad níos intuartha.

Seanchód á nótáil. Nuair a thosaigh muid, bhí thart ar 4 mhilliún líne againn de chód Python atá ann cheana féin. Ba léir nach raibh sé éasca an cód seo go léir a anótáil. Chruthaíomar uirlis darb ainm PyAnnotate ar féidir léi faisnéis chineál a bhailiú de réir mar a ritheann tástálacha agus is féidir nótaí cineáil a chur le do chód bunaithe ar an bhfaisnéis a bhailítear. Mar sin féin, níor thugamar faoi deara go nglactar go forleathan leis an uirlis seo. Bhí bailiú faisnéise cineáil mall, agus ba mhinic go raibh mórán athruithe láimhe ag teastáil ó nótaí a ghintear go huathoibríoch. Rinneamar machnamh ar an uirlis seo a rith go huathoibríoch gach uair a dhéanaimid athbhreithniú ar chód, nó ag bailiú faisnéise cineáil bunaithe ar anailís a dhéanamh ar líon beag iarratas líonra iarbhír, ach shocraigh muid gan é a dhéanamh toisc go raibh ceachtar den dá chur chuige ró-riosca.

Mar thoradh air sin, is féidir a thabhairt faoi deara go raibh an chuid is mó den chód anótáilte de láimh ag a úinéirí. Chun an próiseas seo a threorú sa treo ceart, ullmhaímid tuarascálacha ar mhodúil agus ar fheidhmeanna fíorthábhachtacha nach mór a bheith anótáilte. Mar shampla, tá sé tábhachtach nótaí cineáil a sholáthar do mhodúl leabharlainne a úsáidtear sna céadta áit. Ach níl sé chomh tábhachtach a thuilleadh anótáil a dhéanamh ar sheanseirbhís a bhfuil seirbhís nua á cur ina hionad. Táimid ag tástáil freisin le hanailís statach a úsáid chun nótaí cineáil a ghiniúint le haghaidh cód oidhreachta.

Allmhairí timthriallacha. Thuas, labhair mé faoi allmhairí timthriallacha (na “tangles spleáchais”), rud a d’fhág go raibh sé deacair mypy a bhrostú. Bhí orainn a bheith ag obair go crua freisin chun tacú le mypy gach cineál nathanna cainte a eascraíonn de na allmhairí timthriallacha. Chríochnaíomar mórthionscadal athdhearadh córais le déanaí a réitigh an chuid is mó de cheisteanna mypy maidir le hallmhairí ciorclach. D'eascair na fadhbanna seo go deimhin ó laethanta tosaigh an tionscadail, ar ais ó Alore, an teanga oideachais ar a raibh an tionscadal mypy dírithe ar dtús. Déanann comhréir Alore sé éasca fadhbanna a réiteach le horduithe allmhairithe timthriallacha. Tá roinnt teorainneacha tagtha le hoidhreacht mypy nua-aimseartha óna chur i bhfeidhm go luath, gan sofaisticiúlacht (a bhí oiriúnach go hiontach do Alore). Déanann Python oibriú le hallmhairí ciorclach deacair, go príomha toisc go bhfuil na habairtí débhríoch. Mar shampla, féadfaidh oibríocht sannacháin ailias cineáil a shainiú i ndáiríre. Ní bhíonn Mypy in ann rudaí mar seo a bhrath i gcónaí go dtí go mbíonn an chuid is mó den lúb iompórtála próiseáilte. Ní raibh aon débhríochtaí den sórt sin in Alore. Is féidir le droch-chinntí a dhéantar sna céimeanna tosaigh d'fhorbairt an chórais iontas míthaitneamhach a chur ar an ríomhchláraitheoir blianta fada ina dhiaidh sin.

Torthaí: an cosán chuig 5 mhilliún líne de chód agus dhearcadh nua

Tá an tionscadal mypy tar éis teacht ar bhealach fada - ó fhréamhshamhlacha luath go córas a rialaíonn 4 mhilliún líne de chineálacha cód táirgthe. De réir mar a tháinig mypy chun cinn, caighdeánaíodh leideanna cineáil Python. Na laethanta seo, tá éiceachóras cumhachtach forbartha thart ar chlóscríobh cód Python. Tá áit aige le haghaidh tacaíochta leabharlainne, tá uirlisí cúnta ann d'IDEanna agus d'eagarthóirí, tá roinnt córais rialaithe cineáil aige, agus tá buntáistí agus míbhuntáistí ag gach ceann acu.

Cé go bhfuil seiceáil cineál tugtha cheana féin ag Dropbox, creidim go bhfuil muid fós sna laethanta tosaigh maidir le cód Python a chlóscríobh. Sílim go leanfaidh teicneolaíochtaí seiceála cineál ag forbairt agus ag feabhsú.

Murar bhain tú úsáid as seiceáil cineáil i do thionscadal Python ar scála mór, bíodh a fhios agat gur am an-mhaith anois é chun tosú ag bogadh go clóscríobh statach. Labhair mé leo siúd a rinne aistriú den chineál céanna. Ní raibh aiféala ar aon duine acu. De bharr seiceáil cineáil is teanga í Python atá i bhfad níos feiliúnaí chun tionscadail mhóra a fhorbairt ná “Python rialta”.

Léitheoirí a chara! An úsáideann tú seiceáil cineál i do thionscadail Python?

An cosán chun clóscríobh a dhéanamh ar 4 mhilliún líne de chód Python. Cuid 3
An cosán chun clóscríobh a dhéanamh ar 4 mhilliún líne de chód Python. Cuid 3

Foinse: will.com

Add a comment