(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); 9 villur sem ber að forðast við forritun í Java - The Codest
The Codest
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Iðnaðargreinar
    • Fjártæknifyrirtæki og bankastarfsemi
    • E-commerce
    • Adtech
    • Heilbrigðistækni
    • Framleiðsla
    • Flutningar
    • Bifreiða
    • Internet hlutanna
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
Aftur ör Farðu aftur
2022-07-08
Hugbúnaðarþróun

9 villur sem ber að forðast við forritun í Java

The Codest

Rafal Sawicki

Java-forritari

Hvaða villur ætti að forðast við forritun í Java? Í eftirfarandi kafla svörum við þessari spurningu.

Hér er tómt.

Java er vinsælt tungumál með trausta stöðu í heimi hugbúnaðarþróun. Það er öflugt og fjölhæft forritunarmál. Um það bil 3 milljarðar tækja um allan heim keyra á Java og því voru að minnsta kosti 3 milljarðar mistaka gerð við notkun þess. Í þessari grein skulum við einbeita okkur að því hvernig við getum forðast að gera fleiri mistök.

1. Fá undantekningu um samtímabreytingu

Þetta er lang algengasta villa sem ég hef rekist á. Á fyrstu starfsdögum mínum gerði ég hana líka mörgum sinnum. Þessi villa kemur upp þegar þú reynir að breyta safninu á meðan þú gengur í gegnum það. The Samtímisbreytingavillan Getur einnig komið upp þegar unnið er með mörg þræði, en fyrir nú skulum við einbeita okkur að grunnsenario.

Gerum ráð fyrir að þú hafir a Safn af notendum þar sem sumir þeirra eru fullorðnir og sumir ekki. Verkefni þitt er að sía út börnin.

for (User : users) {

   if (!user.isAdult()) {

 users.remove(user);

   }

}

Að keyra hið fyrrnefnda kóði endast í að fá Samtímisbreytingavillan. Hvar fórum við úrskeiðis? Áður en við kláruðum endurtekninguna okkar reyndum við að fjarlægja nokkra þætti. Það er það sem kallar fram undantekninguna.

Hvernig get ég forðast það?

Það eru nokkrar nálganir sem geta hjálpað í því tilviki. Fyrst og fremst skaltu nýta þér Java Góða átta – Streyma.

List adults = users.stream()

 .filter(User::isAdult)

 .toList();

Með því að nota a Sagnorð Með síu gerum við gagnstætt við fyrri skilyrði – nú ákvarðum við hvaða þætti skuli innifela. Kosturinn við slíka nálgun er sá að auðvelt er að tengja aðrar aðgerðir á eftir fjarlægingunni, t.d. kort. En fyrir guðs sakir, vinsamlegast reyndu ekki að gera eitthvað eins og hér að neðan:

users.stream()

 .filter(v -> !v.isAdult())

 .forEach(users::remove);

Það gæti líka endað í Samtímisbreytingavillan Vegna þess að þú ert að breyta streymisuppsprettunni. Það getur líka gefið þér fleiri undantekningar sem verður ekki auðvelt að rekja.

Til að leysa Samtímisbreytingavillan í einþráða aðstæðu gætirðu líka skipt yfir í að nota beint Endurtekjari og þess fjarlægja() aðferð, eða þú gætir einfaldlega ekki fjarlægt þætti á meðan á endurtekningu stendur. Hins vegar mæli ég með að nota Lækir – það er 2022.

2. Að geyma lykilorð sem strengi

Þar sem ég er sífellt meira að fást við netöryggi, væri ég ekki trúr sjálfum mér ef ég nefndi ekki að minnsta kosti eitt. Java-villa sem getur leitt til öryggisvandamáls. Að geyma lykilorð sem fengin eru frá notendum í Röð hlutur er nákvæmlega eitthvað sem þú ættir að óttast.

Málið (eða kannski kosturinn) við Röð er að það er óbreytanlegt. Í netaðskilnaðarheiminum skapar það mögulega ógn þar sem þú getur ekki hreinsað gildi sem einu sinni er búið til Röð hlut. Árásarmaður sem fær aðgang að minni tölvunnar þinnar getur fundið þar lykilorð í venjulegu texta.

Í öðru lagi strengir í Java eru innlimuð af JVM og geymd í PermGen-rými eða á hrúgurými. Þegar þú býrð til a Röð hlutur er vistaður í skyndiminni og er aðeins fjarlægður þegar ruslhreinsirinn (Garbage Collector) byrjar að vinna. Þú getur ekki verið viss um hvenær lykilorðið þitt er eytt úr strengjasafninu þar sem ruslhreinsirinn vinnur á óákvörðunarhæfan hátt.

Hvernig forðast það?

Mælt er með að nota bókstafaraðgerð[] eða, enn betra, bókasafnið sem styður geymslu lykilorða sem bókstafaraðgerð[], t.d.Lykilorð4j. The bókstafaraðgerð[] Raðinn er breytanlegur og hægt er að breyta honum eftir að hann hefur verið frumstilltur. Eftir að hafa unnið úr lykilorði geturðu einfaldlega eytt bókstafaraðgerð[] Breyta lykilorðaraðra með því að skrifa handahófskennd tákn í hana. Ef árásaraðilar fá aðgang að vinnsluminni tölvunnar munu þeir aðeins sjá nokkur handahófskennd gildi sem tengjast ekki lykilorðum notenda.

3. (Ó)meðhöndlun undantekninga

Nýliðar og jafnvel reyndari forritarar vita ekki hvernig á að meðhöndla undantekningar rétt. Helsta synd þeirra í því efni er einfaldlega að hunsa þær. Þetta er aldrei góð nálgun.

Því miður getum við ekki gefið þér silfurkúlulausn sem hentar í alla UndantekningÍ því senaríó sem þú rekst á þarftu að hugsa um hvert tilvik fyrir sig. Hins vegar getum við gefið þér nokkur ráð um hvernig þú byrjar á því efni.

Hvernig get ég forðast það?

  1. Að hunsa Undanteknings er aldrei góð venja. Undanteknings eru settar inn af einhverjum ástæðum, svo þú ættir ekki að hunsa þær.

  2. Reyna {...} Fanga(Exception e) { skrá(e);} er sjaldan rétt nálgun til Undantekning meðhöndlun.

  3. Endurkasta Undantekning, sýna villutilkynningarglugga fyrir notandann eða að minnsta kosti bæta við ítarlegum skilaboðum í skrána.

  4. Ef þú skildir undantekningar þínar ómeðhöndlaðar (sem þú ættir ekki að gera), útskýrðu þá að minnsta kosti í athugasemdinni.

4. Að nota null

Því miður er nokkuð algengt að finna Java-fall sem í sumum tilvikum skilar a Ekkert gildi. Vandamálið er að slík fall krefst þess af viðskiptavini sínum að framkvæma null-skoðun á niðurstöðunni. Án hennar, NullPointerException er kastað.

Hitt er að standast a Ekkert gildi gildi. Hvers vegna datt þér það í hug? Í slíku tilfelli þarf fallið að framkvæma null-skoðun. Þegar þú notar þriðja aðila bókasöfn geturðu ekki breytt innri hluta fallanna. Hvað þá?

Enn mikilvægara er að aðrir forritarar sem lesa kóðann þinn og sjá að þú skilar Ekkert gildi mun líklega ruglast á því hvers vegna þú velur svona undarlega leið til að innleiða eiginleikann þinn.

Hvernig get ég forðast það?

Ekki skila a Ekkert gildi gildi! Aldrei! Ef fallið þitt skilar einhverri tegund af Safn, þú getur bara skilað tómum Safn. Ef þú vinnur með einstökum hlutum geturðu nýtt þér null-hlutahönnunarmynstur. Þar sem Java 8, það er innleitt sem Valfrjálst. Að öðru leyti felst minnst mælt með nálgun í því að lyfta Undantekning.

5. Þung strengjasamröðun

Vonandi er þetta ekki mistök sem þú gerir, þar sem þetta er vinsælasta (eða kannski næst vinsælasta eftir FizzBuzz) spurning í viðtali. Eins og þú ættir nú þegar að vita, a Röð hlutur er óbreytanlegur í Java – þegar það er búið til, er ekki hægt að breyta því. Svo samskeyting af Röð Bókstafleg gildi þýða mikla óþarfa minnisúthlutun. Að tengja saman Röð hlutir í hvert skipti krefst þess að búa til tímabundið Strengjabyggir hlut og breyta því aftur í streng. Þess vegna er þessi lausn alls ekki hentug ef við viljum sameina mörg stafi.

Hvernig get ég forðast það?

Til að leysa það vandamál skaltu nota Strengjabyggir. Það býr til breytilegan hlut sem auðvelt er að meðhöndla. Auðvitað geturðu alltaf notað Strengsmiði ef þitt verkefni er notað í samhliða samhengi.

6. Ekki nýta núverandi lausnir

Þegar verið er að þróa hugbúnað er nauðsynlegt að kynnast grundvallaratriðum forritunarmálsins sem þú notar, en það dugar ekki. Margar reikniritlegar áskoranir sem þú rekst á við innleiðingu nýrrar aðgerðar hafa þegar verið leystar af einhverjum öðrum. Of oft hef ég séð einhvern innleiða öryggisreiknirit frá grunni. Slík nálgun er villuhætt. Einn einstaklingur getur ekki prófað svo flókna lausn til hlítar. Sameiginlega þekkingin á lið sem samanstendur af miðlungs- og háþróuðum forriturum er næstum alltaf betra en stórfengleiki eins snillinga Java-forritari. Það er ekki þörf á að þú finnir upp hjólið – þú þarft bara að aðlaga núverandi lausn að þínum þörfum.

Hvernig get ég forðast það?

Reyndu að leita að bókasöfnum sem takast á við vandamálið sem þú ert að vinna að. Reyndu að finna svipuð lausnir. Mörg af bókasöfnunum sem eru í boði á vefur eru ókeypis og hafa verið fínpússaðir og prófaðir af reyndum forriturum og allri Java-samfélaginu. Ekki hika við að nýta þá.

7. Ekki nægur tími til að skrifa prófanir

Það er freistandi að trúa því að kóðinn okkar muni alltaf keyra fullkomlega. Að skrifa ekki próf fyrir kóðann er versti syndin af Java hugbúnaðarþróunaraðilar. Margir af okkur Kjósa handvirka og könnunarprófanir fremur en einingaprófanir, sem er algjör vitleysa. Hvers vegna eyða tíma í að skrifa prófanir þegar þú getur einbeitt þér að því að skila heimsins besta kóða fyrir verkefnið þitt, sem ALDREI hefur villur?&ltjoke>. En raunin er grimm og við getum ekki skilað hágæða kóða án þess að skrifa prófanir.

Hvernig get ég forðast það?

Þú ættir alltaf að útbúa prófanir fyrir kóðann þinn. Ég veit að TDD-aðferðin er ekki svo auðveld í viðhaldi, en þú ættir að minnsta kosti að útbúa prófanir sem ná yfir allar aðstæður þar sem kóðinn þinn getur verið keyrður. Þetta felur í sér prófanir á undantekningartilvikum. Einingaprófanirnar eru nauðsynlegar. Þú verður að útbúa þær fyrir hverja einustu eiginleika verkefnisins þíns ef þú vilt tryggja að kóðinn þinn sé auðvelt að endurskipuleggja og auðvelt að bæta við í frekari þróun. 

Eitt enn. Haltu háu gæðastigi í prófkóðanum þínum – það mun vera þess virði. Þetta er ráð frænda Bobs og ég er algjörlega sammála því.

Auk þess skaltu ekki gleyma öðrum gerðum prófa. Samþættingapróf eru eitthvað sem þú ættir að íhuga í hverju verkefni.

8. Að gleyma aðgangstakmörkunum

Einkarekstur og opinber rekstur, ekki satt? Hvernig getum við gleymt þeim? Það kemur í ljós að það eru fleiri. Þegar þú byrjaðir fyrst að læra Java, Þú hefur örugglega lært um verndaða aðgangsbreytingaþætti. Þeir geta verið gagnlegir í sumum tilvikum, svo það er þess virði að vita um tilvist þeirra.

Java-þróunaraðilar Þeir virðast oft gleyma um umfang pakkans. Það er auðvelt að gleyma að nota það þar sem það er óbeint og krefst engrar Java Lykilorð. Pakkasviðið er mikilvægt. Það gerir þér kleift að prófa verndaða aðferð. Vernduð atriði eru aðgengileg úr braut prófunarflokksins, svo framarlega sem pakkinn er sá sami.

Hvernig get ég forðast það?

Mundu eftir vernduðu breytiforritinu og því að pakkasviðið gerir þér kleift að prófa það.

9. Að nota hreinan JavaEE í stað Spring

Næsta skref eftir að hafa lært Java SE er að læra hvernig á að keyra Java Á netþjónum, hvernig á að búa til forrit á fyrirtækjastigi.

Nýliðar falla oft í gildru við að læra JavaEE þar sem til eru ógrynni af kennsluleiðbeiningum um það. Jafnvel ‘Thinking in Java’, the Java-forritarar‘Biblían nefnir JavaEE og segir ekkert um hin valkostina.

Hvernig get ég forðast það?

Java EE er söngur fortíðar. Nú á dögum er Spring það sem allir sækjast eftir og Java EE er bara gott að hafa. Öll nútímaleg forrit á fyrirtækjastigi nota Spring, svo þú ættir alvarlega að íhuga að læra það. hér það.

Kynntu þér Java-sérfræðinginn

Lesa meira:

Rétti hátturinn til að finna bestu Java-þróunaraðila

Besti gerðir verkefna fyrir Java

Besta forritunarmálin fyrir fintech-fyrirtæki

Tengdar greinar

Myndskreyting af heilbrigðisforriti fyrir snjallsíma með hjartatákni og hækkandi heilsufarsgrafík, merkt með The Codest-merkinu, sem táknar stafræna heilsu og HealthTech-lausnir.
Hugbúnaðarþróun

Heilbrigðis-hugbúnaður: gerðir og notkunartilvik

Tólin sem heilbrigðisstofnanir treysta á í dag líta ekkert út eins og pappírsskjöl frá fyrri áratugum. Heilbrigðisforrit styðja nú heilbrigðiskerfi, sjúklingameðferð og nútímalega heilbrigðisþjónustu á klínískum og...

THECODEST
Yfirlitsmynd sem sýnir hnignandi súlurit með uppstrekktri ör og gullmynt sem táknar kostnaðarhagkvæmni eða sparnað. The Codest-merkið birtist í efra vinstra horni með slagorðinu "In Code We Trust" á ljósgráum bakgrunni.
Hugbúnaðarþróun

Hvernig á að stækka þróunarteymið án þess að fórna gæðum vörunnar

Ertu að stækka þróunarteymið þitt? Lærðu hvernig á að vaxa án þess að fórna gæðum vörunnar. Þessi leiðarvísir fjallar um merki um að kominn sé tími til að stækka, uppbyggingu teymisins, ráðningar, forystu og verkfæri—og hvernig teymið getur...

THECODEST
Hugbúnaðarþróun

Búðu til vefumsóknir sem þola framtíðina: innsýn frá sérfræðiteymi The Codest

Uppgötvaðu hvernig The Codest skarar fram úr við að búa til stigstækar, gagnvirkar vefumsóknir með nýjustu tækni, sem bjóða upp á hnökralausa notendaupplifun á öllum kerfum. Lærðu hvernig sérfræðiþekking okkar knýr fram stafræna umbreytingu og viðskipti...

THECODEST
Hugbúnaðarþróun

Topp 10 hugbúnaðarþróunarfyrirtæki í Lettlandi

Kynntu þér fremstu hugbúnaðarþróunarfyrirtæki Lettlands og nýstárlegar lausnir þeirra í nýjustu grein okkar. Uppgötvaðu hvernig þessir tækniforingjar geta hjálpað til við að efla fyrirtækið þitt.

thecodest
Lausnir fyrir fyrirtæki og vaxtarfyrirtæki

Grunnatriði í Java hugbúnaðarþróun: Leiðarvísir að árangursríkri útvistun

Kannaðu þessa ómissandi leiðbeiningu um árangursríka outsourcing Java hugbúnaðarþróun til að auka skilvirkni, afla aðgangs að sérfræðiþekkingu og tryggja árangur verkefna með The Codest.

thecodest

Gerðu þig áskrifanda að þekkingargrunni okkar og vertu upplýstur um sérfræðiþekkingu upplýsingatæknigeirans.

    Um okkur

    The Codest – Alþjóðlegt hugbúnaðarþróunarfyrirtæki með tæknimiðstöðvar í Póllandi.

    Bretland - Höfuðstöðvar

    • Skrifstofa 303B, 182-184 High Street North E6 2JA
      Lundúnir, England

    Pólland - staðbundin tæknimiðstöðvar

    • Fabryczna skrifstofugarður, Aleja
      Herbergi 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsjá, Pólland

    The Codest

    • Heim
    • Um okkur
    • Þjónusta
    • Case Studies
    • Vitið hvernig
    • Starfsferilmöguleikar
    • Orðabók

    Þjónusta

    • Það er ráðgjafi
    • Hugbúnaðarþróun
    • Bakendaþróun
    • Framhliðþróun
    • Staff Augmentation
    • Bakhliðaráþróunaraðilar
    • Skýjaverkfræðingar
    • Gagnaverkfræðingar
    • Annað
    • Gæðatryggingartæknimenn

    Auðlindir

    • Staðreyndir og goðsagnir um samstarf við utanaðkomandi hugbúnaðarþróunaraðila
    • Frá Bandaríkjunum til Evrópu: Af hverju ákveða bandarísk sprotafyrirtæki að flytja til Evrópu?
    • Samanburður á tæknifjarkerfisþróunarmiðstöðvum: Tech Offshore Europe (Pólland), ASEAN (Filippseyjar), Eurasia (Tyrkland)
    • Hvert eru helstu áskoranir CTO-a og CIO-a?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Höfundarréttur © 2026 af The Codest. Öll réttindi áskilin.

    is_ISIcelandic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian es_ESSpanish nl_NLDutch etEstonian elGreek pt_PTPortuguese cs_CZCzech lvLatvian lt_LTLithuanian is_ISIcelandic