Vad är vacker kod? [stängd]

<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">

Stängt . Denna fråga är opinionsbaserad . För närvarande accepteras inte svar.

Kommentarer

Svar

”Skönhet köps av ögons bedömning”.

Som sagt, jag tror att de flesta programmerare håller med om att vacker kod visar en balans mellan tydlighet och transparens, elegans, effektivitet och estetik.

  • Klarhet och transparens : Tydlighet är hur lätt en läsare kan härleda vad koden gör. Genomskinlig kod gör vad den verkar göra. Om kod verkar göra en sak men faktiskt gör något annat (eller något mer) är den inte transparent – den är vilseledande.

  • Elegans : det finns många sätt att implementera de flesta algoritmer, men vissa sätt är klumpiga medan andra är snygga och graciösa. Korthet ger ofta elegans, men överdriven korthet kan minska tydligheten.

  • Effektivitet : undvik onödig användning av resurser (som CPU-tid, minne och I / O).

  • Estetik : att vara lätt i ögonen. Detta är ganska subjektivt. Det handlar mest om stil. Ett viktigt övervägande är att ha en konsekvent stil. Kod som ändras, till exempel, indragning av stil halvvägs, är ful.

Kommentarer

  • en vacker förklaring, +1
  • Jag tar bort " Effektivitet ". Även om det i strikt mening är positivt, kan det i bästa fall vara vilseledande att inkludera det i listan. Det är normalt en biprodukt av de andra och det bör vara ett sekundärt problem vid tidpunkten för kodningen. Den främsta anledningen är att den för det mesta bara manifesterar sig efter att kompilatorn har arbetat med sin mörka magi. (T.ex. den klassiska snabba inversa kvadratrotfunktionen)
  • @DarrelHoffman Höger, även om den kompromissen också är sant genom fler variabler som definierar bra kod, inte bara effektivitet och resten (det finns en bra lång förklaring till detta i " Kod Komplett " – tyvärr minns jag inte ' i vilken del av bok, nära början troligen-)
  • @Jubbat: Jag håller med om att effektivitet vanligtvis är ett sekundärt problem, men jag tror ändå att det påverkar skönhetsekvationen.

Svar

Låt inte folk lura dig att tro att vacker kod är följande:

  • smarta algoritmer
  • smygiga språkfunktioner
  • lösa ett problem med minst antal tangenttryckningar

Eftersom det inte är det. Kod som den är söt , och det är verkligen värt en blick, men det är inte den typ av kod du vill slå dig ner med.

Och du vet den snygga rekursiva metamallade statiska polymorfismen som ärver variabla lambdor – eller vad det var du läste om online? Du kanske är ivriga att hoppa på innovativa och smidiga knep utan en tydlig anledning att använda dem. Men kod som skjuter gränserna för ett språk är inte heller vacker.

De är sexiga . Massor av kul, men fråga dig själv detta: Vill jag verkligen att spendera tid på att utforska språkets anatomi, eller vill jag arbeta tillsammans med ett språk och bygga något vackert? När allt kommer omkring är ett programmeringsspråk bara verktyget att skapa.


Så vad är vacker kod då?

Vacker kod = underhållbar kod. DET ÄR DET!
DET ÄR FORMULAN !

Om du kan skriva något, kom tillbaka till det några månader senare och fortsätt att göra framsteg på det, så är det vackert. Om du ett år senare inser att du också vill lägga till funktionalitet som att finjustera en befintlig funktion, och du lyckas göra det relativt lätt, då är det vackert. Om andra kan gå in i din kodbas och snabbt ta reda på vad som händer eftersom saker är organiserade, kommer de att ha mer hår och också vara vackra.

Så den verkliga frågan du vill ställa är : ”Hur skriver jag mer underhållbar kod?”. Jag är rädd att det är en större fråga och det är en ganska kreativ disciplin. Fortsätt bara skriva kod, men den här gången frågar du dig inte om det kan vara vackrare. Fråga dig själv om du kan göra det mer underhållbart.

Kommentarer

Svar

Min syn på detta är att ”Beautiful Code” inte är ett objektivt eller särskilt användbart begrepp. Och vi bör inte försöka definiera det.


Typiska ordboksdefinitioner av det engelska ordet ”beauty” går så här:

  • ”1. kombinationen av alla egenskaperna hos en person eller sak som glädjer sinnena och behaga sinnet ”
  • ” 1. kvaliteten som finns i en person eller sak som ger intensivt estetiskt nöje eller djup tillfredsställelse för sinnet eller sinnena. ”
  • ”1. Kvaliteten som ger sinnet eller sinnena glädje och är förknippad med egenskaper som form eller färgs harmoni, konstnärlighet, sanning och originalitet.”

(Källa http://dictionary.com )

Den gemensamma tråden är att ”skönhet” handlar om vad som är estetiskt tilltalande. Det är nödvändigtvis subjektivt … som illustreras av ordspråket ”Skönhet är i betraktarens ögon”.


Vi kan tillämpa ordet ”skönhet” på koden , och den uppenbara betydelsen är att koden är ”estetiskt tilltalande”.

Men att sedan säga att ”vacker kod” har en viss uppsättning attribut (som föreslås av andra svar) är en motsägelse av uppenbart betydelse av estetiskt tilltalande. Estetik handlar om hur människor … enskilda människor … uppfattar saker.

Eller att uttrycka det på ett annat sätt, det finns något motbjudande om att någon berättar för mig vad jag borde tycker är vackert, vare sig det är i människor, konstverk eller … kod.

Så långt som jag oroar vacker kod är kod som jag tycker är vacker, och det är det. Det är subjektivt och individuellt, och låt det bara vara.

Svar

Här är mitt råd.

Titta igenom svaren på Hur kan du förklara " vacker kod " till en icke-programmerare? och se vilka egenskaper de säger att fokusera på. Plocka sedan upp en bok som Kod komplett och läs igenom den för att lära dig råd om hur du skriver bättre kod.

Vid något tillfälle kommer det att slå dig när du tittar på din äldre kod , ”Detta är ful.” Det blir en direkt estetisk reaktion. Och när du tittar på den kommer du att inse att du ser din kod som en programmerare och kan se fulheten eftersom du vet hur snyggare koden ska se ut.

Svar

Bara för att du ofta läser om vacker kod betyder inte att människor som skriver om den har samma definition. Tyvärr, att döma efter din fråga verkar det inte som om de ens brydde sig om att definiera det i första hand.

För mig är vacker kod:

  • Uttrycksfull
  • Kortfattad

Kortfattad kod som inte är uttrycksfull kan vara kryptisk, och uttrycklig kod som inte är kortfattad tenderar att vara uppblåst och tråkig att läsa, så du behöver båda.

Jag skulle inte inkludera underhållsbarhet som en del av det som gör koden vackert, för skönhet är något du ser / läser, inte något du agerar på. Men igen är det min personliga uppfattning.

Svar

Termen vacker kod är en mycket vag och abstrakt term. Det är lätt att räkna ut vad det representerar och vad det betyder, men det bör aldrig ses som mer än ett sekundärt mål.

Det påminner mig mycket om kodtäckningsvärdet. När du får siffran tillräckligt hög kan du koppla av och gå på något annat. Att ha en kodbas med cirka 80% täckning är bra, inte skottsäker, men tillräckligt för att kyla och göra andra saker. Att ha 40% täckning är ganska skrämmande och bör uppmuntra dig att få upp det numret.

Poängen är bara att kodtäckningen bara är meningsfull om siffran är låg. Så låt det inte vara lågt. När täckningen stiger till en viss punkt, gå vidare till något annat.

På samma sätt är vacker kod bra. Om du har vacker kod, bra, gå vidare till något annat. Inte stressa för mycket om det. Du kommer aldrig att nå det 100% -märket, och om du gör det kommer du att hitta att du har fokuserat för mycket på hur det läser ut, eller hur det ser ut, och inte tillräckligt med vad det gör, eller hur det gör det. Så gå till ett rimligt märke och sluta sedan.

Men om din kod är flyktig, om det är en gigantisk invecklad röra av spaghettikod, om det fysiskt smärtar dig att öppna filen, om du inte har några kommentarer eller dokumentation etc etc etc fixa det sedan. Och gör det snarast.

Du kommer att hitta över tid att din kodbas blir generellt renare, i allmänhet ljusare och i allmänhet vackrare och ännu viktigare mer användbar när du fokuserar på att göra den mindre flyktig. Att skriva vacker kod är inte en process i ett steg.

Det finns ingen magisk filosofi. Dess 1000 mindre steg, alla gjort tillsammans, som alla tjänar ett konkret syfte som inte har något att göra med hur vacker koden ser ut. Men när du servera dem alla tillsammans, de bildar vacker kod som summan av dess delar. Som voltron. Eller kaptenplaneten.

Svar

Jag instämmer verkligen med svaren här, men med ett mindre tekniskt tillvägagångssätt skulle jag säga att vacker kod är ett uttryck för dess författares ”tankeklarhet om det aktuella problemet som manifesterar sig genom ett välformulerat och exakt men ändå enkelt språk.

Att titta igenom vacker kod är för mig ungefär som att titta på ett konstverk, se allt nya detaljer som visar tillverkarens avsikt, men också hur de olika delarna förverkligades, var och en gav svar på så många frågor, och sedan, slutligen, hur dess existens känns som en naturlag som allt stämmer överens med så att det bara kan beskrivas med vördnadens ord: magnifik , inspirerande, vackert.

Så ur det perspektivet kan du i din karriär som programmerare göra upptäckter av vacker kod som andra kanske inte förstår för att de saknar kunskap eller kanske inte är anmärkningsvärda längre eftersom de har blivit bortskämda av för mycket skönhet;)

Vacker kod har alla de pragmatiska egenskaperna som nämnts annars, jag håller helt med.

Svar

Jag har tre kriterier:

  • Enkelt: Det måste åtminstone vara läsbart för människor. Du kan till exempel skriva en kod som fungerar vid O (1) för en lösning med massor av rader, men jag föredrar kod som fungerar med 0 (n) löser med få rader. Detta kan förändras i extrema situationer, men i början är enkelhet viktigt.
  • Återanvändbar: Koden måste vara återanvändbar men inte överskriven. Om du behöver en operation bör du definiera det så att du kan använda det år senare.
  • Indrag: Kanske är detta inte ett problem för dig, men för nybörjare är detta det första som ska lösas.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *