Bästa sätt att lämna sin kod i för att lättast kunna fortsätta senare?

Permalänk

Bästa sätt att lämna sin kod i för att lättast kunna fortsätta senare?

Som titeln lyder så undrar jag hur ni brukar göra för att ni så snabbt som möjligt ska kunna fortsätta koda på kod som ni påbörjat men inte avslutat.

Sitter för tillfället själv och gör en övningsuppgift i C++ som handlar om multipelt arv och har kommit en bit, men det finns fortfarande mycket kvar att göra. Nu är ju inte detta jättekomplicerad kod, men jag har ändå en känsla av att det kommer att ta en bra stund att sätta sig in i vad som behövs göras nästa gång jag ska fortsätta. När man skriver riktigt stora program är det naturligtvis en ännu viktigare fråga.

Så hur brukar ni göra? Skriver ni en TODO-lista? Skriver ni kommentarer i koden? Har ni några andra smarta sätt att underlätta för sig själv när man vill fortsätta att koda på ofärdig kod?

Permalänk

Brukar lämna en kommentar längst upp i source med allt som ska göras.

Visa signatur

Insert funny joke here

Permalänk
Medlem

Börjar med att skapa interface på högsta abstraktionsnivån. När jag sedan ska börja implementera så lämnar jag alla metoder tomma från kod men lämnar istället TODO-kommentarer tills jag hunnit implementera dem.

På så sätt blir det "omöjligt" att glömma saker, och programmet växer på ett (enligt mig) hanterbart sätt.

Permalänk
Medlem

Jag brukar lämna kommentarer och se till att koden är så stabil som möjligt så jag inte blir tagen på sängen senare. Men använder man en issue tracker så är det ju egentligen ett icke-problem.

Permalänk
Medlem
Skrivet av MrMadMan:

Börjar med att skapa interface på högsta abstraktionsnivån. När jag sedan ska börja implementera så lämnar jag alla metoder tomma från kod men lämnar istället TODO-kommentarer tills jag hunnit implementera dem.

På så sätt blir det "omöjligt" att glömma saker, och programmet växer på ett (enligt mig) hanterbart sätt.

Som ovan.

Det är rätt smidigt om man t.ex. ska låta någon annan göra delar av arbetet, så lämnar man TODO:s i stället för att implementera allting själv.

Visa signatur

SLI Titan X - i7 5960x 8-kärnig - Asus Rampage V - 32 GB Corsair Dominator - Intel 750 2200 MB/s Pcie-disk.

Permalänk
Medlem
Skrivet av MrMadMan:

Börjar med att skapa interface på högsta abstraktionsnivån. När jag sedan ska börja implementera så lämnar jag alla metoder tomma från kod men lämnar istället TODO-kommentarer tills jag hunnit implementera dem.

På så sätt blir det "omöjligt" att glömma saker, och programmet växer på ett (enligt mig) hanterbart sätt.

Vad menar du med "skapa interface på högsta abstraktionsnivån"? (Jag är själv nybörjare!)

Visa signatur

12c/24t 4.0GHz (Zen2) • 2x16GiB 3200MHz C14 • RTX 2080 FE 1965MHz 7000MHz • X570 I PW • Ghost S1 MKII

Permalänk
Skrivet av Ramses_II:

Som titeln lyder så undrar jag hur ni brukar göra för att ni så snabbt som möjligt ska kunna fortsätta koda på kod som ni påbörjat men inte avslutat.

Sitter för tillfället själv och gör en övningsuppgift i C++ som handlar om multipelt arv och har kommit en bit, men det finns fortfarande mycket kvar att göra. Nu är ju inte detta jättekomplicerad kod, men jag har ändå en känsla av att det kommer att ta en bra stund att sätta sig in i vad som behövs göras nästa gång jag ska fortsätta. När man skriver riktigt stora program är det naturligtvis en ännu viktigare fråga.

Så hur brukar ni göra? Skriver ni en TODO-lista? Skriver ni kommentarer i koden? Har ni några andra smarta sätt att underlätta för sig själv när man vill fortsätta att koda på ofärdig kod?

Brukar ha massa kommentarer i koden och TODO-kommentarer ovanför varje metod som inte är färdig... Om jag måste lämna en metod halvfärdig ser jag till. att skriva en kommentar där jag var om vad det var jag höll på med eller tänkte på...

Visa signatur

Corsair Vengeance LPX 4x8GB DDR4 2666MHz CL16 | Intel Core i7 6700 3,4 GHz 8MB | MSI Z170A KRAIT GAMING | Corsair Force Series 3 120 GB | Seagate SSHD Desktop 2 TB 7200 RPM 3,5" | Creative Sound Blaster Z PCIe | Western Digital 500 GB | Samsung Writemaster | Corsair TX750 V2 750 W | EVGA GeForce GTX 970 4GB SSC ACX 2.0+| Fractal Design Define R5 (Svart)

Permalänk
Skrivet av Curik:

Jag brukar lämna kommentarer och se till att koden är så stabil som möjligt så jag inte blir tagen på sängen senare. Men använder man en issue tracker så är det ju egentligen ett icke-problem.

Skrivet av Njure:

Som ovan.

Det är rätt smidigt om man t.ex. ska låta någon annan göra delar av arbetet, så lämnar man TODO:s i stället för att implementera allting själv.

Är koden komplierbar under hela denna tiden? Eller det spelar kanske inte någon större roll?

Permalänk
Medlem
Skrivet av Ramses_II:

Är koden komplierbar under hela denna tiden? Eller det spelar kanske inte någon större roll?

Man får lägga en "return 0" så går det att köra ändå.

Visa signatur

SLI Titan X - i7 5960x 8-kärnig - Asus Rampage V - 32 GB Corsair Dominator - Intel 750 2200 MB/s Pcie-disk.

Permalänk
Hedersmedlem

Klassikern är väl att lämna ett par kompileringsfel där man vet att man ska fortsätta/behöver förbättra koden. Då missar man det garanterat inte dagen efter :). Så gör jag alltid när jag går på lunch och har något ofärdigt.

Visa signatur

Every time you create an iterator: God kills a kitten.

Permalänk

Beror på situation. En grundregel är att man aldrig någonsin ska checka in något som ej är körbart och absolut inte ej kompileringstid saker. Även om man arbetar själv så ska man aldrig gå ifrån denna regel och det kan mycket väl hända att man behöver ändra en helt annan del av sitt program.

Så det jag gör är såklart att skriva en så kortfattat och tydlig kommentar jag kan. (tyvärr ofta inte tillräckligt bra, något jag behöver träna på) Därefter fattar jag beslutet om koden ska checkas in eller bli en "shelve". I kommentaren anger jag vad som har ändras och eventuella brister. Dumt är inte att ha någon versionshistorik i filen. Det är inte så ovanligt på hobbynivå att man skriver kommentarer över varje funktion.
Hur "proffsen" gör vet jag inte, då jag ej jobbar i större projekt med vanliga språk.

i vilket fall så bör man använda versionshanterare typ från dag 1. Git är en enkel och gratis lösning.

*edit'

Angående lämna tomma metoder så kan det skapa huvudbry för folk som implementerar ens klasser och har stora problem att få någon metod att utföra det som den enligt sitt namn utger sig för att vara. Så mitt tips är att lära sig hur "proffsen gör" och apa efter. Tyvärr så har de flesta som mig inte tid att lära sig hur man borde göra utan vi gör en lösning som knappt fungerar, jobbar man in mindre projekt så kan det gå ändå.

Visa signatur

[Core i7-3930K med 32GB ram, 2*256GB SSD] & [Core i7 3770K med 16 GB RAM, 256GB SSD] som tillsammans har ett [HD 5850 1GB] och 3st 24".

Permalänk

På jobbet försöker vi skriva enhets/integerations-tester först. Om man ger testerna bra namn och skiver dem tydligt får man en rätt bra känsla för vad som är kvar att göra bara genom att läsa igenom de tester som fortfarande failar.

Permalänk
Medlem

Jag brukar skriva kommentarer i koden samt komplettera detta med https://trello.com/. Ett mycket smidigt verktyg för att ha koll på vad som ska göras och vad som är gjort, det är mest anpassat för teams men fungerar lika bra om man är ensam. Organiserat kaos är den röda tråden när jag programmerar

Visa signatur

WROOOOOOM
Citera så hittar jag tillbaka!

Permalänk
Medlem
Skrivet av bud_bundy:

Beror på situation. En grundregel är att man aldrig någonsin ska checka in något som ej är körbart och absolut inte ej kompileringstid saker. Även om man arbetar själv så ska man aldrig gå ifrån denna regel och det kan mycket väl hända att man behöver ändra en helt annan del av sitt program.

Så det jag gör är såklart att skriva en så kortfattat och tydlig kommentar jag kan. (tyvärr ofta inte tillräckligt bra, något jag behöver träna på) Därefter fattar jag beslutet om koden ska checkas in eller bli en "shelve". I kommentaren anger jag vad som har ändras och eventuella brister. Dumt är inte att ha någon versionshistorik i filen. Det är inte så ovanligt på hobbynivå att man skriver kommentarer över varje funktion.
Hur "proffsen" gör vet jag inte, då jag ej jobbar i större projekt med vanliga språk.

i vilket fall så bör man använda versionshanterare typ från dag 1. Git är en enkel och gratis lösning.

*edit'

Angående lämna tomma metoder så kan det skapa huvudbry för folk som implementerar ens klasser och har stora problem att få någon metod att utföra det som den enligt sitt namn utger sig för att vara. Så mitt tips är att lära sig hur "proffsen gör" och apa efter. Tyvärr så har de flesta som mig inte tid att lära sig hur man borde göra utan vi gör en lösning som knappt fungerar, jobbar man in mindre projekt så kan det gå ändå.

Skrivet av KaptenDavidsson:

På jobbet försöker vi skriva enhets/integerations-tester först. Om man ger testerna bra namn och skiver dem tydligt får man en rätt bra känsla för vad som är kvar att göra bara genom att läsa igenom de tester som fortfarande failar.

De där två sakerna i kombination är så jag försöker jobba när jag lyckas avhålla mig från okynneskodande.
Man sätter upp enhetstester (eller integrationstester beroende på projektets storlek) som inte kan lyckas. Sedan tar man ett misslyckat test och skriver det så att det kan lyckas. Sedan skriver man koden så att det lyckas och så tillbaka till ett misslyckat test. Upprepa tills klar eller okynneskodardriften tar över.

När det gäller själva koden så föredrar jag gigantiska variabelnamn som beskriver vad koden gör framför kommentarer. Det och så små kodblock som möjligt. När man sitter med en loop i en switch i en loop så bör man rygga tillbaka. Det blir jobbigt att underhålla annars.

Visa signatur

.<

Permalänk
Skrivet av oelrich:

När det gäller själva koden så föredrar jag gigantiska variabelnamn som beskriver vad koden gör framför kommentarer. Det och så små kodblock som möjligt. När man sitter med en loop i en switch i en loop så bör man rygga tillbaka. Det blir jobbigt att underhålla annars.

I allmänhet gillar jag också långa variabelnamn men har börjat anpassa dem lite beroende på hur länge de ska användas.
Exempelvis: [c for c in diesel_cars] istället för [diesel_car for diesel_car in diesel_cars].
Ibland blir man tvungen att korta ner lite för att kunna hålla sig till 80 chars per rad.

Loop switchar får man vara försiktig med så man inte får en Loop-switch_sequence.

Permalänk
Medlem
Skrivet av Ramses_II:

Är koden komplierbar under hela denna tiden? Eller det spelar kanske inte någon större roll?

Jag säger som bud_bundy; att man aldrig ska checka in något som ej går att kompilera utan fel. Även när man är själv så kan det innebära en del huvudvärk.

Att lämna tomma metoder låter som ett amatörskämt, faktiskt. Tänk själv ifall någon vill använda klassen och inte tittar på implementationen, snacka om förvirring..

Permalänk
Legendarisk
Skrivet av MrMadMan:

Börjar med att skapa interface på högsta abstraktionsnivån. När jag sedan ska börja implementera så lämnar jag alla metoder tomma från kod men lämnar istället TODO-kommentarer tills jag hunnit implementera dem.

På så sätt blir det "omöjligt" att glömma saker, och programmet växer på ett (enligt mig) hanterbart sätt.

Skrivet av Njure:

Man får lägga en "return 0" så går det att köra ändå.

Hellre än att lämna metoder tomma eller returnera tillfälliga värden (som anropande kod, eller andra utvecklare, inte kan skilja från fel) så kan man lämna exceptions för att indikera att metoden inte är implementerad.

Skickades från m.sweclockers.com

Visa signatur

Abstractions all the way down.

Permalänk
Datavetare
Skrivet av Curik:

Jag säger som bud_bundy; att man aldrig ska checka in något som ej går att kompilera utan fel. Även när man är själv så kan det innebära en del huvudvärk.

Att lämna tomma metoder låter som ett amatörskämt, faktiskt. Tänk själv ifall någon vill använda klassen och inte tittar på implementationen, snacka om förvirring..

Hur ska man då göra backup? "Tricket" är väl att alltid göra all icke-trivial utveckling på en privat gren, då kan man utan problem checka in saker med jämna mellanrum (och pusha till en server som gör backup om man kör distribuerat versionshanteringssystem som t.ex. git).

Håller med om tomma metoder, endera låter man helt bli att implementera dem (så det blir kompileringsfel) eller så stoppar man in ett abort() (motsvarande) anrop i dem + kommentar om att funktionen inte är implementerad än.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Icte:

Vad menar du med "skapa interface på högsta abstraktionsnivån"? (Jag är själv nybörjare!)

Det här svaret på SO förklarar det bra: http://stackoverflow.com/a/2697810

Permalänk
Medlem
Skrivet av Yoshman:

Hur ska man då göra backup? "Tricket" är väl att alltid göra all icke-trivial utveckling på en privat gren, då kan man utan problem checka in saker med jämna mellanrum (och pusha till en server som gör backup om man kör distribuerat versionshanteringssystem som t.ex. git).

Håller med om tomma metoder, endera låter man helt bli att implementera dem (så det blir kompileringsfel) eller så stoppar man in ett abort() (motsvarande) anrop i dem + kommentar om att funktionen inte är implementerad än.

Jag kanske bör nämna att mitt tillvägaggångssätt med "tomma" metoder gäller bara så länge endast jag själv jobbar med koden. Jag låter inte någon annan ta vid där jag slutat utan att tydligt markera vad som saknas (t.ex. kasta exception som förklarar vad som borde hända istället)