Sužinokite Savo Angelo Skaičių
Darbas su datomis ir laikais jūsų programoje
Jau maždaug šešerius metus esu profesionalus kūrėjas. Per tuos šešerius metus aš niekada nedirbau įmonėje ar prie projekto, kuris tam tikra forma nekovojo su datos ir laiko problemomis.
Beveik kiekvienai programai, kurią dirbsite, reikia tam tikru būdu naudoti laiką, o tai reiškia, kad tam tikru momentu turėsite rinkti, saugoti, gauti ir rodyti datas ar laiką. Nėra sidabrinės kulkos, skirtos spręsti datas ar laiką, ir niekada negalite išvengti sudėtingo laiko supratimo, tačiau yra žingsnių, kuriuos galite padaryti, kad tai būtų mažiau skausmas.
Per tuos metus, kai dirbau su skirtingomis programavimo kalbomis, pastebėjau, kad šios žinios yra labai ilgos.
Tinkamo duomenų formato pasirinkimas
Pirmasis žingsnis dirbant su laikais ir datomis yra pasirinkti duomenų pateikimą. Nors skirtingi formatai gali atrodyti daugmaž vienodi, jūsų pasirinktas formatas turės didelę įtaką jūsų kodo rašymui ir derinimui.
Skaitmeninės laiko žymės naudojimas, kai jums reikia datos, reikš datos laiko žymės analizavimą ir datos paėmimą iš jos, o tai gali būti nesudėtinga, atsižvelgiant į laiko juostą.
angelo numeriai 949
Naudojant pasirinktinę eilutę, kad būtų galima parodyti laiko tarpą, atrodo, kad ją lengva laikyti ir valdyti, tačiau sunku pateikti užklausą. Be to, naudojant bet kokio tipo reprezentaciją, kurios žmogaus akys neatpažįsta iš karto, apsunkinsite kodo derinimą.
Renkantis datos ar laiko formatą, laikausi šių taisyklių:
- Niekada nenaudokite skaitmeninių laiko žymių. Dažniausiai jas paprasčiausia įsigyti standartinėse bibliotekose iš įvairių programavimo kalbų, tačiau jos nėra žmonių skaitomos ir pagunda jomis manipuliuoti yra per stipri.
- Laikytis ISO 8601 , standartas, apibrėžiantis datos ir laiko duomenų formatą. Neįmanoma rasti bibliotekos bet kuriai kalbai, kuri galėtų valdyti ISO 8601 variantus.
- ISO 8601 yra standartas, tačiau jis turi daugybę variantų. Visada turėtumėte pasirinkti labiausiai žmonėms skaitomą ISO 8601 variantą. Tai nereikalauja jokių papildomų pastangų, bet lengviau derinti.
- Laiko žymos eilutėje turėtų būti tik jums būtinai reikalingi duomenys. Dirbant su laikais, jūsų eilutėje neturėtų būti datos, o dirbant su laiko juostos-agnostikos data - eilutėje neturėtų būti laiko juostos. Pridėjus papildomos informacijos, analizės operacija ir būsimų kūrėjų duomenų tikslai yra neaiškūs
- Laikydami laiko juostas laiko žymėse visada normalizuokite tą pačią laiko juostą. Tai ne tik palengvina kompiuteriui duomenų rūšiavimą ir apdorojimą, bet ir žmogaus kūrėjui.
Šių taisyklių laikymasis jums iš anksto daug nekainuos, tačiau palengvins jūsų gyvenimą, kai bus sukurta jūsų paraiška ir pastebėsite, kad jūsų laikas ir datos nėra tokie, kokių tikėjotės.
Tinkamo įrankio pasirinkimas
Kaip ir daugumoje mūsų pramonės problemų, laiko ir datos tvarkymas priklauso nuo to, kaip pasirinkti tinkamą darbo įrankį.
Gundytina naudoti mėgstamos kalbos standartinės bibliotekos įrankius, tačiau tai gali būti ne pats geriausias pasirinkimas. Nors kai kurios standartinės bibliotekos turi fantastiškas datos ir laiko ypatybes („Python“), kitos yra visiškai apgailėtinos („Javascript“). Naudojant netinkamą įrankį daug sunkiau kurti funkcijas, pagrįstas laiku, ir tai palengvina klaidų patekimą į jūsų programą.
Gera biblioteka, skirta tvarkyti datas ir laiką, leis laikytis 5 aukščiau paminėtų taisyklių. Konkrečiai, ji turėtų sugebėti:
- Analizuokite bet kurį datos vaizdą, į kurį galite patekti (įskaitant išorinius vaizdus).
- Išveskite bet kokį jums reikalingą datos vaizdą (įskaitant išorinius vaizdus).
- Manipuliuokite datas ir laiką, iš jų pridėdami arba atimdami laiko vienetus.
- Palyginkite datas ir laiką.
- Teisingai konvertuokite tarp laiko juostų.
Svarbu, kad jūsų biblioteka palaikytų šias funkcijas, nes priešingu atveju pagunda patiems išbandyti funkcionalumą bus per didelė. Ir kad būtų aiškiau, jei bandysite patys įdiegti bet kurią iš tų funkcijų, jums nepavyks.
Neanalizuokite savo laiko žymių reguliariais posakiais, nepridėkite sekundžių prie skaitinės laiko žymės, nes tai atrodo įprastas skaičius ir nelyginkite datos ir laiko naudodami lygybės operatorių. Šios bibliotekos egzistuoja, nes šias problemas sunku išspręsti, o iš naujo išradus ratą jūsų programoje tiesiog paliksite sugedusį ratą.
Žemiau turiu keletą pasiūlymų bibliotekoms, kurios atitinka šiuos kriterijus:
Kalba | Biblioteka |
„Python“ | Standartinė biblioteka |
„Javascript“ | Momentas ir Akimirkos laiko juosta |
„Java 8“ ir naujesnės versijos | Standartinė biblioteka (java.time) |
„Java 7“ ir senesnės versijos | „Joda-Time“ |
Greitas | „SwiftDate“ |
Jei jūsų kalba nėra sąraše (nes nesu pakankamai susipažinusi), tiesiog ieškokite datos ir laiko bibliotekos. Tikėtina, kad rasite gerą biblioteką, kuri padarys viską, ko jums reikia.
Žinojimas apie laiką
Paskutinės žinios, kuriomis turiu pasidalinti, nėra susijusios su darbu su datomis ir laikais, bet yra labiau bendra filosofija, padedanti mums išvengti problemų. Ji taikoma tiek datos ir laiko tvarkymui, tiek ir kitoms programavimo problemoms. .
Visada patikrinkite savo prielaidas.
Prie kiekvienos pateikiamos problemos priartėjame turėdami daug žinių ir dar didesnį prielaidų rinkinį. Tvarkant datas ir laikus, svarbiau nei bet kada patikrinti savo prielaidas, kad įsitikintumėte, jog jos vis tiek atitinka jūsų scenarijų.
Šis sąrašas , pavadinimu „Klastotės, programuotojai tiki laiku“, pateikia daug puikių pavyzdžių, kurie iliustruoja laiką, ko gero, ne tai, ką jūs galvojote. Kai kuriate ar kuriate funkciją, kurios centre yra laikas, aš raginu jus patraukti partnerį ir pereiti šį sąrašą užtikrinant, kad išvengėte išvardytų spąstų.
Laiko klaidas yra žinoma sunku sugauti ir dar sunkiau išbandyti. Jei kuriate atsižvelgdami į šį sąrašą, galėsite išvengti subtilių klaidų, kurios galėtų paveikti jūsų klientus, tačiau kurių jie negalėtų sugauti (blogiausia klaida!)
Laiko juostos
Jokia diskusija apie laiką ar datą nebus baigta nepaminėjant laiko juostų. Be to, kad susipažintumėte su aukščiau išvardytais paplitimais, taip pat susipažinkite su laiko juostų pagrindais.
Laiko juostos nuolat bus skausmo taškas dirbant su laiku, net jei manote, kad jas „supratote“. Turėdami šiek tiek žinių apie laiko juostas, galėsite susikoncentruoti į savo mąstymą ir užtikrinti, kad manipuliuodami laiku nepadarysite jokių loginių klaidų.
Deja, jokiu būdu negalima visiškai išvengti laiko ir datos saugojimo ir manipuliavimo programuojant. Bet jei atliksite šiuos veiksmus ir dirbsite atsižvelgdami į šias žinias, galite palengvinti užduotį, nes sumažinsite rašomo kodo kiekį ir priversite save į paradigmas, kurios rečiau sukelia problemų.
Dalykitės Su Savo Draugais: