Diskussioner om programmering
Moderatorer: Fanta_gbg, e5frog, stonan, Zlasher, hollowman
av Redreamer » 2 februari 2018, 21:20
Hur lång funktion tycker ni att man kan skriva innan den blir oöverskådlig och måste brytas ned? Mina verkar snitta 50 -150 rader och då är det en del tomma rader för att förtydliga "stycken" osv. Egentligen har jag inte haft någon gräns, de har mest blivit som de blivit men långa blir ofta svårare att begripa och debugga, speciellt om man har långa hopp. Någon som har tips på en guide för att koda med "stil"?
It always return one day!
-

Redreamer
- Stormästare

-
- Inlägg: 1431
- Blev medlem: 1 maj 2005, 10:07
- Ort: Borås
av bjonte » 3 februari 2018, 08:29
Jag skummade lite i min källkod och jag skulle grovt gissa att mitt medel ligger på 50 rader. Jag blev sugen på att skriva ett skript som visar statistik nu.
En bok som brukar hänvisas till för att hjälpa till att skriva bra kod är Clean Code av Robert C. Martin. Den har exempel i högnivåspråk men det mesta går att applicera på assembler med.
-

bjonte
- Stormästare

-
- Inlägg: 2021
- Blev medlem: 17 april 2006, 23:12
av Redreamer » 3 februari 2018, 09:54
En annan sak som jag slarvat med, men egentligen haft i tankarna redan från början är ett "funktionshuvud". Jag har använt mig av det nu när jag skriver mina AI funktioner. Mycket för att ha koll på vilka funktioner som är beroende av tidigare.
exempel.
;*******************************************************************************
;ai_go_to_long_direction
; Prefunctions: "ai_long_way_to_go""
; Input: "var_ai_lwtg_up_down_left_right_length"
; Output: "ai_player_direction"
;
; FUNCTION DESCRIPTION
; Follow the longest path
;*******************************************************************************
För mig så har detta faktiskt varit kanske användbart. Man glömmer annars snabbt vila in och ut variabler som en bit var beroende av. Och i mitt AI experimenterande så har jag kastat om ordningen på funktionerna för att få önskat resultat.
It always return one day!
-

Redreamer
- Stormästare

-
- Inlägg: 1431
- Blev medlem: 1 maj 2005, 10:07
- Ort: Borås
av bjonte » 3 februari 2018, 11:44
Redreamer skrev:En annan sak som jag slarvat med, men egentligen haft i tankarna redan från början är ett "funktionshuvud".
Det där är riktigt användbart. Jag kör med en liknande, men mer slimmad variant:
- Kod: Markera allt
// Multiplies register using unsigned self modifying inline code tailored for the multiplicand.
// -> A: Value to multiply
// <- A: Result
// <> X: Preserved
// <> Y: Preserved
macro inline_mul8(.multiplicand)
{
...
}
Jag tycker att det är väldigt hjälpsamt att tala om vilka register som inte förstörs så att funktionen kan användas i loopar utan att jag behöver leta i koden efter oanvända register eller spara undan i onödan.
-

bjonte
- Stormästare

-
- Inlägg: 2021
- Blev medlem: 17 april 2006, 23:12
Återgå till Programmering/prog.-verktyg
Vilka är online
Användare som besöker denna kategori: Inga registrerade användare och 1 gäst
Banners

