Torsdagsdiskussion - Lära sig kod utantill?

Permalänk
Medlem

Torsdagsdiskussion - Lära sig kod utantill?

Jag har länga funderat på en sak.
När man sitter o kodar diverse saker, i mitt fall PHP så lär mig mig aldrig kod utantill.
Om jag behöver en funktion till exempel så kan jag den aldrig utantill utan jag kollar alltid gamla hemsidor jag gjort och kopierar därifrån. Jag lär mig alltså hur det funkar en gång sen utgår jag alltid ifrån den gången.

Hur gör ni egentligen när ni kodar? Sitter ni o pluggar in hur det ska vara eller kommer det automatiskt att nu kan det utantill efter nåt år?

Nu har jag hållt på med php i ungefär ett år och jag börjar lära mig det "på riktigt".

Men alltid när jag behöver CSS mallar osv så tar jag alltid en gammal och bara skriver om den vilket gör att jag aldrig gör en sida ifrån scratch. Jag ändrar bara mått och positioner på divar och gör nya bilder and so on...

Berätta gärna hur ni brukar göra steg för steg när ni ska göra en ny hemsida, applikation, spel, brainfuckfunktioner eller vad det nu är.

Permalänk
Medlem

jag tror nog att de allra flesta har som vana att kopiera en del kod från gamla projekt, men när man har programmerat i 10 år som flera på swec har så är programmering så pass "självklart" så att man inte behöver försöka komma ihåg saker, allt bara förefaller sig logiskt.

Det är ungefär som du inte kommer igåg alla meningar du kan säga när du ska prata, allt bara rinner på när man väl kommer igång.

Lika enkelt som det låter faktiskt.

Permalänk
Medlem

Det kommer ju automatisk när man sitter och kodar, underlättar ju också om man alltid skriver om all kod och inte använder någon färdigskriven baskod.

Skriver alltid mina projekt ifrån grunden.
Gillar ärligt talat inte att arbeta med individer som alltid måste slå upp allt innan de ens kan fundera på en lösning av problemet.

Permalänk
Medlem

Det är nog ganska stor skillnad från person till person.

För mig så lär jag mig koden väldigt snabbt, när jag väll sätter mig ner och anstränger mig. Det har varit så de senaste projekten, som är kodade i java, då har jag knattrat ner funktioner som jag "återanvänder" på någon sekund, medan den "nya" koden tar en stund. Men sen är det också så för de flesta, så även för mig, så är det designen som tar tid, inte själva skrivandet av koden.

Visa signatur

En fisk...

Permalänk
Medlem

Brukar nästan aldrig kopiera från gamla projekt, bara när det är något jag väldigt sällan gör brukar jag göra det. Annars sitter det i ryggmärgen. Ifall det är något jag inte riktigt kan eller är osäker på brukar jag bara ta en titt i gamla projekt, men jag brukar nästan aldrig kopiera det rakt av.

Sen är det ju som amphiler säger, det man har skrivit förut kan man, medan den "nya" koden tar lite längre att skriva. Då måste man liksom tänka till.

Permalänk
Medlem

Skriver alltid från grunden, speciellt när det gäller XHTML/CSS. Där vill jag ha stenkoll så att allt blir löst på bästa sätt. Och vet man inte sakers syften och funktioner är chansen stor att lösningen inte är den bästa.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av MagnusL
Gillar ärligt talat inte att arbeta med individer som alltid måste slå upp allt innan de ens kan fundera på en lösning av problemet.

Jag slår upp ofta, eftersom jag kodar i många olika språk. Nästan alla språken har en implementation av en viss typ av funktion, men nästan inget döper funktionen/erna till samma sak eller skickar lika många argument till dom osv.

Exempel: Hitta index för en sträng i en annan sträng.
Python: str.find(substr[, start[, end]])
PHP: strpos(str, substr[, offset])
Perl: index(str,substr[, offset])
C: strstr(str, substr)

Om jag inte har kodat språk X på ett tag så kommer jag inte alltid ihåg vad funktionen heter (find, strpos, index, strstr?) och om den tar en offset eller inte och så vidare.

Sen när man har slagit upp det en gång så minns man det ju. Men du kanske menade mer tvångsmässigt letande efter funktionssignaturer oavsett hur många gånger man har använt den?

Permalänk
Medlem

Jag brukar bryta ner allting i så små delar det går och sedan tänka efter vilken/vilka lösningar som klarar av alla delarna. Då får jag en rätt bra bild av vad jag måste göra och hur det går att göra.

När det sen gäller själva koden man skriver kan jag det mesta jag använder i huvudet, men visst blir det att gå tillbaka till gammla projekt, sidor och annat för att klippa och klistra lite, men det är mest då för att man itne orkar skriva allt en gång till. Sen kanske man tar den gammla koden, gör lite ändringar och förbättrar/anpassar också.

Ibland händer det att man itne kommer på någon lösning men då jämför jag istället problemet jag har med gammla problem, och går tillbaka och ser hur jag löste det då som inspiration. Det är fördelen jag har med att dela upp allting i smådelar, jag kan hitta lösningar på problem i lösningar som egentligen är gjorda för mycket större och annorlunda problem än det jag står inför just för stunden.

Annars så är google en bra vän när det gäller rena syntax-frågor... Jag är ingen höjdare på att hålla exakt vilken kod som behövs i huvudet, även om jag vet hur den skrivs.

Visa signatur

Xbox Live - Firaphex
Jag har inte alltid rätt, men jag utgår från det tills jag ser bevis på annat. Citera för svar
2008-06-18, Dagen då integriteten ställdes tå mot tå med maktmissbruket och förlorade.

Permalänk
Medlem

I PHP och HTML använder jag en skiteditor så där kör jag copy-paste på i princip allting, jag vet inte ens hur hämtar data från en mysql-databas även om jag gjort en ganska stor sida med adminscritpt, formum och liknande.
Gå in på php.net känns lika omständigt som att öppna upp ett gammalt projekt och kopiera därifrån.

Däremot när jag kodar C# använder jag visual studio som har inbyggd kodkomplettering och dokumentation. Där skriver jag allting från scratch eftersom man bara behöver veta ungefär vad klassen/funktionen heter och i vilket namespace det ligger, sen kommer resten av sig självt när man börjar skriva

Permalänk
Medlem

Jag återanvänder generellt mycket från tidigare projekt, så pass mycket att jag inte klarar av att göra relativt enkla grejer, som dock finns i majoriteten av mina program, utan att gå tillbaka och kopiera det från ett tidigare projekt, eller slå upp det, just för att jag har skrivit det en gång för länge sedan, och sedan bara kopierat det utan att läsa genom det.

Detta är ju självklart dåligt, eftersom det finns situationer man varken har tillgång till sina gamla projekt, eller t.ex. msdn, och så sitter man där som en fån och får inte till världens enklaste grej.

Visa signatur
Permalänk
Medlem

alltså vid stora projekt kan jag med lätthet återanvända flera veckors arbete från tidigare projekt. Är det inga här som har skrivit egna bibliotek som de använder för mer än ett projekt? Att ha skrivit en egen lib eller liknande räknas ju absolut som att återanvända kod.

Jag har säkert sparat ett halvår totalt i utvecklingstid (summerat) för alla mina projekt jag har gjort genom att återanvända saker.
I c++ hade jag ett stort ramverk som jag återanvände för varenda spelprojekt, inte jag som skrivit det från början, men skit i c++, det är ute.

I php har jag flera filer som följer med i varenda projekt för att effektivisera, jag har t.ex. en tools.php på nästan 3000 rader med en massa gott. Mitt nuvarande projekt (communityt) är typ större än alla andra projekt (förutom spelen då) tillsammans, så efter detta kommer jag nog ha ett betydligt större bibliotek med finurliga prylar.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av totoo
... jag har t.ex. en tools.php på nästan 3000 rader med en massa gott.

Får man ta del av den?

Permalänk
Citat:

Ursprungligen inskrivet av Wishie
Får man ta del av den?

My thoughts exactly :).

Visa signatur

This is my signature. There are many like it but this one is mine.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av MagnusL
Det kommer ju automatisk när man sitter och kodar, underlättar ju också om man alltid skriver om all kod och inte använder någon färdigskriven baskod.

Skriver alltid mina projekt ifrån grunden.
Gillar ärligt talat inte att arbeta med individer som alltid måste slå upp allt innan de ens kan fundera på en lösning av problemet.

Du kan inte hitta så många att arbeta med va?
Eller så menar du nånting annat med att slå upp. Dokumentationen är ju programmerarens bästa vän. Är ju helt omöjligt att kunna alla funktioner och vad alla funktioner tar för argument och i vilken ordning de ska in och vilka som är obligatoriska och vilka som är extra eller om man står i valet och kvalet mellan två funktioner som gör i princip samma sak men den ena är snabbare än den andra i det fallet som du ska använda den.

Sen är det ju självklart så att de bitar som man ofta använder minns man ändå men det viktiga tycker inte jag är hur bra fotominne man har utan hur väl man strukturerar prgrammet, hur effektiv kod man producerar, hur väl man utnyttjar det som programmeringsspråket tillhandahåller istället för att uppfinna hjulet igen och antagligen göra det sämre osv osv.
Att man nyttjar dokumentation ser jag enbart positivt.

Visa signatur

Confused by earlier errors. Bailing out...
pluggakuten.se - Din läxhjälp på internet

Permalänk
Hedersmedlem

Beror på, jag kommer generellt sett ihåg rätt mycket även om jag inte kodat ett språk på ett tag (om jag koncentrerar mig), om det däremot är ett språk som jag kodar i ofta (exempelvis O'Caml eller PHP, trots att jag håller mig ifrån det har jag kodat så pass mycket i det för att minnas) så rinner det på utan större förhinder.

Däremot så har jag åtminstonde ett lib som återanvänds då och då, vilket är ett konfigurationlib skrivet i O'Caml som parsar konfigurationsfiler med syntaxen

en_sträng = "test" en_sektion { integer = 1 subsektion { float = 5.0 } }

Återanvänds just för att det är så smidigt och att jag skrev det för att kunna återanvända det.

Det som tar längst tid är att tänka ut en vettig struktur på programmet, vilka funktioner som ska tillhöra vilken del osv så att det inte blir en stor röra. Dessutom så måste jag då och då tänka efter lite extra då jag hoppar mellan olika programmeringsparadigmer.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av "Tusse" Torvald
My thoughts exactly :).

Mäh nu var ni drygast.
Nej, det kan ni typ inte få direkt. Koden ligger under några licenser som jag inte kan leka med riktigt då de har utvecklats åt flera företag, så jag kan inte skylta med den hur som helst, samt att väldigt mycket av det är väldigt totoo-style-anpassat för mina ramverk.

Men jag kan berätta lite om koden.

Synd att eventuellt fucka tråden, men några blir väl kanske glada, så det lönar sig kanske ändå.

Mina tre senaste projekt jag har arbetat med har vart communities av olika slag, och det sista innan dess hanterade också användare och meddelanden i viss mån, så vi säger fyra communties i rad - så därför har vi många funktioner som är bra för sådant.

Vad har vi då för funktioner? En hel del generiskt för att kontrollera rättigheter till olika avdelningar, inloggningar, automatiska utloggningar, felrapportering till admin etc. Ett exempel är funktions isAdmin($userId).

Sedan har vi också en hel del stränghantering, rensning av strängar för att hantera specialtecken, t.ex. "nej, du får inte ha detta tecken eller denna teckenkombinationen i ditt användarnam".

Jag har också en hel del verktyg som eliminerar kompatibilitetsproblem mellan olika phpversioner (kanske börjar bli dags att rensa bort). Ett exempel är att jag skapar funktionen str_irepace om den inte redan finns.

En del phpgd-verktyg, t.ex. byta storlek på och duplicera bilder och sätta vattenstämplar. Även filuppladdning finns förståss med.

*scrollar ned i filen och tittar lite till*

Stilmallsinkludering... T.ex. så inkluderar jag automatiskt stilmallar för den sidan jag är inne på då jag har includeCSS($thisPage) som sedan kollar om filen style/$thisPage.css finns skapad etc, och kollar också i style/iefix/$thisPage.css finns och läser i så fall in dem etc, mycket som är anpassat efter ramverket.

Jag har en jättestor funktion för att skapa listor som jag har använt i mina fyra senaste projekt.

Det fungerar ungefär såhär:

$query = "select * from users";
$fields = array("Namn", "name", "Ålder", "age");

sedan skriver jag
createList($query, fields);

sedan skrivs automatiskt en lista med alla användare ut, med rubrikerna namn och ålder. Den är betydligt mer komplicerad än så och behandlar sortering, sökning och länkning på en massa sätt också, men ja, listan återanvänds i alla projekt och genomgår bara rimligtvis små justeringar ibland.

Jag har en massa funktioner för att generera formulär. T.ex. createSelect() där jag matar in namn och lite prylar och en array med alternativ så skapar den en <select> med dessa attribut, jag har sånt för varenda form-objekt typ. Detta för att smidigt anpassas för massor av dynamik och inblanding av js, t.ex. onclick eller onfocus som nu utförs helt med automatik.

Verktyg för flerspråkssiter. t.ex. typ printWord("hejsan", "english") som då blir "hello"...

Massor av tids- och datumfunktioner som justerar saker och lägger till nån bokstav på slutet etc, t.ex "2:a"

Nu fick det vara nog, men väldigt mycket gott har jag.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av totoo
Men jag kan berätta lite om koden.

Det är precis vad jag vill... Det är bara roligt att diskussioner utvecklas och kommer in på flertal ämnen.

Nu har jag kollat igenom hela tråden och som en del säger är det såklart bra ifall man ofta skriver om sina grejer istället för att hela tiden ta från gamla projekt.
Mycket handlar också hur lat man är. Jag själv är ganska lat vilket är ett litet hinder men sålänge man har intresset att lära så kan man alltid bli bättre men att det kanske tar lite längre tid.

Det finns säkert flera här som pluggat något språk i ett år och är jätteduktiga samtidigt som jag har väldigt mycket mer att lära.

Permalänk
Citat:

Ursprungligen inskrivet av totoo
Mäh nu var ni drygast.
Nej, det kan ni typ inte få direkt. Koden ligger under några licenser som jag inte kan leka med riktigt då de har utvecklats åt flera företag, så jag kan inte skylta med den hur som helst, samt att väldigt mycket av det är väldigt totoo-style-anpassat för mina ramverk.

Tja, det var lite det jag var rädd för...

Citat:

Ursprungligen inskrivet av totoo
Men jag kan berätta lite om koden.

... men detta var egentligen vad jag hoppades på :).
Nu är det sent och jag orkar inte läsa inlägg på fler än två meningar, men jag ska garanterat inspektera totoos verktygslåda imorgon.

Kismo: jamenvisst är det roligt att diskussioner utvecklas lite (inom vissa ramar förstås). Jag tycker liksom att det är hela idén med ett forum, men det finns alltid någon som tjuter i högan sky varje gång diskussionen går lite utanför deras fråga i det första inlägget.

Visa signatur

This is my signature. There are many like it but this one is mine.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av "Tusse" Torvald
Tja, det var lite det jag var rädd för...
... men detta var egentligen vad jag hoppades på :).
Nu är det sent och jag orkar inte läsa inlägg på fler än två meningar, men jag ska garanterat inspektera totoos verktygslåda imorgon.

Kismo: jamenvisst är det roligt att diskussioner utvecklas lite (inom vissa ramar förstås). Jag tycker liksom att det är hela idén med ett forum, men det finns alltid någon som tjuter i högan sky varje gång diskussionen går lite utanför deras fråga i det första inlägget.

Haha jag vet...
Nej men visst ere skoj

Förresten jag var på bio idag och efter filmen så....
Haha nej jag e trött nu... Skämt åsido.

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av MagnusL
Skriver alltid mina projekt ifrån grunden.

Mycket bra att göra under den tid man fortfarande utvecklas fort, men med åren lär man sig ju väloptimerade sätt att lösa problem på, och då är det ju ingen större idé att återuppfinna hjulet. Komplexa projekt skriver du dessutom knappast helt själv, och garanterat inte "från grunden." YMMV, förstås.

För min del, även om jag inte har mycket till personliga skills att skryta med, så ligger referensbiblioteket alltid nära tillhands. Att alt-tabba över för en snabb sökning när man känner sig osäker är ett billigt skydd mot idiotbuggar senare.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av totoo
tools.php på nästan 3000 rader med en massa gott.

Jag bara måste. Hej jag heter Tomas Johansson, vill ni titta på min tootoo samling? (varantv för de som kommer ihåg)

Själv känns det ibland som att man har minne som en gulfisk, medans konstiga funktioner som man har använt 1-2 gånger kan man komma ihåg. Jag borde kopiera mindre för att inte glömma av basfunktioner lika lätt..

Visa signatur

Plan9 fan. In glenda we trust.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Teetow
Mycket bra att göra under den tid man fortfarande utvecklas

Jag tror det är där jag behöver skärpa mig lite för att utvecklas snabbare som webutvecklare.
Vad mycke utvecka det blev nu
Det går ju såklart segare i början om man ska skriva om allting hela tiden men man borde verkligen göra det då man förbättras starkt senare när man börjat utveckla mer seriöst. Dessutom, om man kan allting mer utantill så kan man legitimt kopiera gammal kod. När man hållt på sålänge att man knappt kan optimera sin kod mer så kan man kopiera den (om vi då bortser att man kopierat kod från internet osv...)

Permalänk
Medlem

Återanvända kod bör väl varje vettig person göra, men att klippa och klistra är kanske inte helt optimalt. Smidigare att som andra varit inne på bygga upp ett framework/bibliotek med klasser och funktioner som håller sig likadana mellan projekt, och sedan använda detta i varje nytt projekt som behöver det.

Att lära sig utantill är ju inte vettigt iaf, om man vet vad funktionen ska göra kan man ju helt enkelt skriva en ny implementation av den om det skulle behövas. Om inte den gamla är obskyrt special-hax-optimerad då.

Visa signatur

hmm

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av totoo
I php har jag flera filer som följer med i varenda projekt för att effektivisera, jag har t.ex. en tools.php på nästan 3000 rader med en massa gott.

Du har väl för fan inte en php-fil på 3000 rader full med funktioner som du inkluderar vid varenda sidvisning? Det måste innebära massa extrajobb för den stackars datorn?

Visa signatur

Brass knuckles and a 2x4