Mikä on kaunis koodi? [suljettu]

Suljettu . Tämä kysymys on mielipidepohjainen . Se ei tällä hetkellä hyväksy vastauksia.

Kommentit

Vastaus

”Kauneus ostetaan silmän harkinnan mukaan”.

Tästä huolimatta luulen, että suurin osa ohjelmoijista on samaa mieltä siitä, että kaunis koodi osoittaa tasapainon selkeys ja läpinäkyvyys, tyylikkyys, tehokkuus ja esteettisyys.

  • Selkeys ja läpinäkyvyys : Selkeys on se, kuinka helposti lukija voi päätellä, mitä koodi tekee. Läpinäkyvä koodi tekee mitä näyttää tekevän. Jos koodi näyttää tekevän yhden asian, mutta tekee itse asiassa jotain muuta (tai jotain muuta), se ei ole läpinäkyvä – se on harhaanjohtava.

  • iv Eleganssi : Useimpia algoritmeja on monia tapoja toteuttaa, mutta jotkut tapat ovat kömpelöitä, kun taas toiset tapoja ovat siistit ja siroiset. Ystävällisyys lisää usein eleganssia, mutta liiallinen ytimekkuus voi vähentää selkeyttä.

  • Tehokkuus : resurssien (kuten suorittimen ajan, muistin ja I / O: n) tarpeettoman käytön välttäminen.

  • Estetiikka : on helppoa silmissä. Tämä on melko subjektiivista. Se tulee enimmäkseen tyyliin. Yksi tärkeä näkökohta on johdonmukainen tyyli. Koodi, joka muuttaa esimerkiksi tyylin sisennystä puolivälissä, on ruma.

Kommentit

  • kaunis selitys, +1
  • otan " Tehokkuuden " pois. Vaikka tiukassa mielessä se on positiivinen, sen sisällyttäminen luetteloon voi olla parhaimmillaan harhaanjohtavaa. Se on yleensä muiden sivutuote, ja sen pitäisi olla toissijainen huolenaihe koodauksen yhteydessä. Tärkein syy on, että se ilmenee pääosin vasta sen jälkeen, kun kääntäjä on työskennellyt pimeän taikansa kanssa.
  • @Jubbat Todellakin – joskus tehokkain ratkaisu johtaa todella rumaan koodiin. (Esim. Klassinen nopea käänteinen neliöjuuritoiminto)
  • @DarrelHoffman Right, vaikka kompromissi on totta myös useammalla muuttujalla, jotka määrittelevät hyvän koodin, paitsi tehokkuuden ja muun (tälle on hyvä pitkä selitys) " -koodissa täydellinen " – valitettavasti en muista ' kirja, todennäköisesti alussa todennäköisesti-)
  • @Jubbat: Olen samaa mieltä siitä, että tehokkuus on yleensä toissijainen huolenaihe, mutta mielestäni se vaikuttaa kauneuden yhtälöön.

Vastaa

Älä anna ihmisten huijata sinua ajattelemaan, että kaunis koodi on seuraava:

  • älykkäät algoritmit
  • harhaanjohtavat kieliominaisuudet
  • ongelman ratkaiseminen pienimmällä näppäimen painalluksella

Koska se ei ole. Tällainen koodi on söpö , ja se on varmasti vilkaisun arvoinen, mutta se ei ole sellainen koodi, johon haluat asettua.

Ja tiedätkö, että hieno rekursiivinen metamallipohjainen staattinen polymorfismi, joka perii vaihtelevat lambdat – tai mitä tahansa olet lukenut verkossa? Saatat olla innokas siirtymään innovatiivisiin ja hienoihin temppuihin ilman selkeää syytä käyttää niitä. Mutta kielen rajoja ylittävä koodi ei ole myöskään kaunis.

Ne ovat seksikkäitä .
Hauskaa, mutta kysy itseltäsi: haluanko todella viettää aikaa tämän kielen anatomian tutkimiseen vai haluanko työskennellä yhdessä kielen kanssa ja rakentaa jotain kaunista? Loppujen lopuksi ohjelmointikieli on vain työkalu luoda.


Mikä siis on kaunis koodi?

Kaunis koodi = ylläpidettävä koodi. TÄTÄ ”S IT!
KAAVA” !

Jos voit kirjoittaa jotain, palaa siihen muutama kuukausi myöhemmin ja jatka edistymistä siinä, se on kaunista. Jos vuosi myöhemmin huomaat, että haluat lisätä myös toiminnallisuutta nipistämällä olemassa olevaa ominaisuutta, ja onnistut tekemään sen suhteellisen helposti, niin se on kaunista. Jos muut ihmiset voivat astua koodipohjaasi ja selvittää nopeasti, mitä tapahtuu, koska asiat on järjestetty, heillä on enemmän hiuksia ja myös kaunis.

Joten todellinen kysymys, jonka haluat kysyä, on : ”Kuinka kirjoitan ylläpidettävämmän koodin?”. Pelkään, että tämä on isompi kysymys ja se on aivan luova kurinalaisuus. Jatka vain koodin kirjoittamista, mutta älä kysy itseltäsi, voiko se olla kauniimpi. Kysy itseltäsi, voitko tehdä siitä ylläpidettävämmän.

Kommentit

Vastaa

Olen sitä mieltä, että ”Kaunis koodi” ei ole objektiivinen tai erityisen hyödyllinen termi. Ja meidän ei pitäisi yrittää määritellä sitä.


Tyypilliset sanakirjan määritelmät englanninkielisestä sanasta ”beauty” ovat näin:

  • ”1. kaikkien yhdistelmä henkilön tai asian ominaisuudet, jotka ilahduttavat aisteja ja miellyttävät mieltä ”
  • ” 1. ihmisessä tai esineessä oleva laatu, joka antaa voimakasta esteettistä nautintoa tai syvää tyydytystä mielelle tai aisteille. ”
  • ”1. Mielen tai aistien ilo ja laatuun liittyvä ominaisuus, kuten muodon tai värin harmonia, taiteellisuuden huippuosaaminen, totuudenmukaisuus ja omaperäisyys.”

(Lähde http://dictionary.com )

Yhteinen ketju on ”kauneus” on siitä, mikä on esteettisesti miellyttävää. Se on välttämättä subjektiivista … kuten havainnollistaa sanonta ”Kauneus on katsojan silmissä”.


Voimme käyttää sanaa ”kauneus” koodiin , ja ilmeinen merkitys on, että koodi on ”esteettisesti miellyttävä”.

Mutta sitten sanoa, että ”kauniilla koodilla” on tietty joukko määritteitä (kuten muut vastaukset ehdottavat), on ristiriita ilmeinen merkitys esteettisesti miellyttävältä. Estetiikka kertoo kuinka ihmiset … yksittäiset ihmiset … havaitsevat asioita.

Tai sanottuna toisella tavalla, on jotain vastenmielistä siinä, että joku kertoo minulle, mitä minun pitäisi pitää kauniina, olipa kyse ihmisistä, taideteoksista tai … koodista.

Sikäli kuin koska olen huolissani, kaunis koodi on mielestäni kaunis koodi, ja se on se. Se on subjektiivinen ja yksilöllinen, ja antaa sen vain jättää sen tälle.

Vastaa

Tässä on minun neuvoni.

Selaa vastauksia kysymyksiin Kuinka voit selittää " kauniin koodin " ohjelmoijalle? ja katso, mihin ominaisuuksiin he sanovat keskittyvän. Ota sitten esiin kirja, kuten Code Complete ja lue se läpi saadaksesi neuvoja paremman koodin kirjoittamisesta.

Jossain vaiheessa se lyö sinua samalla kun tarkastelet vanhempaa koodiasi. , ”Tämä on rumaa.” Se on suora esteettinen reaktio. Ja katsellen sitä, huomaat, että katselet koodiasi kuten ohjelmoija, ja näet rumuuden, koska tiedät miltä paremmalta näyttävän koodin pitäisi näyttää.

Vastaa

Vain siksi, että olet lukenut usein kauniista koodeista, ei tarkoita, että ihmisillä, jotka kirjoittavat siitä, on sama määritelmä. Valitettavasti kysymyksesi perusteella se ei näytä edes vaivautuneen määritä se ensin.

Minulle kaunis koodi on:

  • Ilmeikäs
  • Ytimekäs

Tiivis koodi, joka ei ole ilmeikäs, voi olla salakirjoitettua, ja ilmaiseva koodi, joka ei ole tiivis, on yleensä paisunut ja tylsä lukemaan, joten tarvitset molempia.

En halua sisällyttää ylläpidettävyyttä osaksi koodia. kaunis, koska kauneus on jotain mitä näet / luet, ei jotain, jonka perusteella toimit. Mutta sitten se on taas minun henkilökohtainen näkemykseni.

Vastaa

Termi kaunis koodi on hyvin epämääräinen ja abstrakti termi. Sen on helppo selvittää, mitä se edustaa ja mitä se tarkoittaa, mutta sitä ei pitäisi koskaan nähdä enempää kuin toissijaisena päämääränä.

Se muistuttaa minua paljon koodin kattavuudesta. Kun numero on riittävän suuri, voit rentoutua ja mennä johonkin muuhun. Noin 80% kattavuuden omaava koodikanta on hieno, ei luodinkestävä, mutta tarpeeksi kylmälle ja muille asioille. 40 prosentin kattavuus on melko pelottavaa, ja sen pitäisi kannustaa sinua saamaan tämä numero ylöspäin.

Kohta on vain, että koodin peitto on todella merkityksellistä vain, jos numero on pieni. Joten älä anna sen olla alhainen. Kun peitto nousee tiettyyn pisteeseen, siirry johonkin muuhun.

Vastaavasti kaunis koodi on hieno. Jos sinulla on kaunis koodi, hieno, siirry johonkin muuhun. Älä stressaudu siitä liikaa. Et koskaan osu siihen 100%: n merkkiin, ja jos huomaat, että olet ”keskittynyt liikaa siihen, mistä se lukee tai miltä se näyttää, eikä tarpeeksi mitä se tekee tai miten se tekee. Joten päästä kohtuulliseen merkkiin ja lopeta sitten.

Mutta jos koodisi on hurja, jos se on jättimäinen sekava spagettikoodin sotku, jos se fyysisesti vaivaa sinua avaamaan tiedoston, jos sinulla ei ole kommentteja tai korjaa dokumentaatio jne. jne. Ja tee se heti.

Löydät ajan mittaan, että koodipohjasi on yleensä puhtaampi, yleensä kirkkaampi ja yleensä kauniimpi ja mikä tärkeämpää on käyttää paremmin, kun keskityt siihen, että siitä tulee vähemmän hurja. Kauniin koodin kirjoittaminen on ei yksivaiheinen prosessi.

Maagista filosofiaa ei ole. Sen 1000 pienempää vaihetta tehdään kaikki yhdessä, jotka kaikki palvelevat konkreettista tarkoitusta, jolla ei ole mitään tekemistä sen kanssa, kuinka kaunis koodi näyttää. Mutta, kun palvelevat heitä kaikkia yhdessä, ne muodostavat kauniin koodin osiensa summana. Kuten voltroni. Tai kapteeni-planeetta.

Vastaa

Olen oikeastaan samaa mieltä täällä olevien vastausten kanssa, mutta vähemmän teknisen lähestymistavan mukaan sanoisin, että kaunis koodi on sen kirjoittajien ilmaus ”käsityksen selkeydestä käsillä olevasta ongelmasta, joka ilmenee hyvin muotoillun ja tarkan mutta yksinkertaisen kielen kautta. / p>

Minulle kauniin koodin katsominen on kuin taideteoksen katsominen, yhä uusien yksityiskohtien näkeminen, jotka osoittavat valmistajan tarkoitus, mutta myös miten eri osat toteutettiin, joista kukin antoi vastauksen niin moniin kysymyksiin, ja sitten lopuksi, miten sen olemassaolo tuntuu luonnolliselta lailta, johon kaikki kohdistuu niin, että sitä voidaan kuvata vain kunnioitussanoilla: upea , inspiroiva, kaunis.

Joten tästä näkökulmasta, ohjelmoijaurassasi saatat löytää löytöjä kauniista koodeista, joita muut eivät ehkä ymmärrä, koska heiltä puuttuu tietoa tai he eivät ehkä enää pidä huomionarvoisina, koska he ovat pilalla liian paljon kauneutta;)

Kauniilla koodeilla on kaikki käytännön ominaisuudet, kuten muuten mainittiin, olen täysin samaa mieltä.

vastaus

Minulla on kolme ehtoa:

  • Yksinkertainen: Ainakin sen on oltava ihmisen luettavissa. Voit esimerkiksi kirjoittaa koodin, joka toimii kohdassa O (1) ratkaisulle, jossa on tonnia riviä, mutta mieluummin koodi, joka toimii 0: n (n) kanssa, ratkaisee muutamalla rivillä. Tämä voi muuttua äärimmäisissä tilanteissa, mutta alussa yksinkertaisuus on tärkeää.
  • Uudelleenkäytettävä: Koodin on oltava uudelleenkäytettävä, mutta ei korvattu. Jos tarvitset operaatiota, määritä se tavalla, jota voit käyttää sitä vuosia myöhemmin.
  • Sisältö: Ehkä tämä ei ole ongelma sinulle, mutta aloittelijatasolle tämä on ensin ratkaistava.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *