Objektorienterad Programkonstruktion

Relevanta dokument
Systematiskt kvalitetsarbete

Objektorienterad Programkonstruktion. Föreläsning 8 30 nov 2015

Nya samlade läroplaner

Du kan själv följa med i denna steg-för-steg guide i din texteditor.

Kursplanerna i svenska och svenska som andraspråk Göteborg 18 oktober 2011

Mebook 360 Special DEMO. Rapport. Vår egen 360. John Doe

TDDD52 CSS. Färger. Färger 1/3/13

Chefer och Ledare grafisk manual

LGR 11 bygger på samma kunskapssyn och värdegrund som Lpo 94

Kursplanen i modersmål Göteborg 14 november 2011

GRAFISK MANUAL TL BYGG VERSION

LGR 11 bygger påsamma kunskapssyn och värdegrund som Lpo94

Topblock. En del av VERKSAMHET AKTUELLT LÄNKAR DOKUMENT KALENDARIUM BÅTKLUBBAR KONTAKT. Lorem ipsum dolores datum Mälarens Båtförbund OKT 25

LOGOTYP. Färgen i logotypen är: CMYK: 100, 80, 20, 20 RGB: 20, 55, 110 PANTONE: 294 C. Vi kallar förgen MC Blå. PRIMÄR LOGOTYP SEKUNDÄR LOGOTYP

GRAFISK MANUAL

GRAFISKA RIKTLINJER FÖR ÅRSMÖTEN AUGUSTI 2015

GRAFISK Profil. inl4_lisen_a_grafisk_profil_me106a.indd :29

våra grafiska riktlinjer

Grafisk manual version

Beställ data och statistik

Planera smidiga utskick. Guide för planering av maskinsorterbara försändelser

Arbetsintegrerande Kooperativ

Grafisk manual Märke, typografi, färger Stockholm konst. stockholmkonst.se/grafisk-profil

Organisation: SLB-analys vid Miljöförvaltningen i Stockholm KontaktpersonMalin Täppefur E-post: Telefonnr:

Remissutgåva. Program för informationssäkerhet

On-line produktion TDDC61

guide till centerpartiets nya profilering

Schildts & Söderströms LOGOTYP

Kommunikativ plattform

ScandiRec. Läs mer: Nya Volvo V90 Cross Country SID 23. ScandiRec.se - Skandinavisk Rekrytering Sverige

FÖRSÄKRINGSBOLAGSDAGEN 2016

DESIGN HANDBOKEN , Version 2

Seminarium Riktade hälsosamtal/ hälsoundersökningar. Digitaliseringsprocess

Luleå gymnasieskola. Rapportens namn. [Dokumentets underrubrik] Författare [Datum]

IGÅR. Internet, www, TCP/IP, IP-adress, DNS, URL. HTTP Request. HTTP Response (HTML & status code)

INNEHÅLL 1. LOGOTYP 2.TYPSNITT 3. FÄRGER 1.1 KONCEPT 1.2 STORLEKAR 1.3 FÄRGSÄTTNING 1.4 FRIZON & PLACERING 1.5 EXEMPEL 1.

Nya reformer. Nya kursplaner årskurs januari Den nya skollagen. En förändrad läroplan för förskolan

Grafisk manual - Kulturcentrum, Kulturskolan, Folkbiblioteket och Konsthallen

Att berätta med webb + En introduktion till HTML

GRAFISK MANUAL 6/2012

WINDOWSPROGRAMMERING LEKTION 2

Avhandlingens titel med plats för undertitel

DESIGN. Juni 2016, Version 3

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

AGENDA WINDOWS PRESENTATION FOUNDATION LEKTION 2. Mer om Kontroller. Mer om Paneler Grid Stack Panel Wrap Panel Dock Panel

Näringslivsprogram 2020 bästa näringslivsklimatet

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

IKT - Plan. Centralskolan

VÅR KAMPANJ. Kampanjhandledning

Dagens pass. Lgr, Lpo??? Lgr 11 Läroplanens innehåll och struktur

SÄTERGLÄNTAN / VISUELL IDENTITET.

CSS. TNMK30 - Elektronisk publicering

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

ÅBO AKADEMI GRAFISK GUIDE

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Anvisningar för skyltning vid Motala kommuns verksamheter. Motala kommun Version

De naturorienterande ämnena i Lgr11 Göteborg

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Vice Vd Marie Hansson FÖRDJUPNING - KUNDAVTAL SAMARBETE MED FÖRSÄKRINGSBOLAG

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Det här är en start- och kapitelsida

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Onsdag 12 september 2018

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Valutec Grafisk manual. Grafisk manual

Unga Aktiesparares varumärke

Grafisk profil RIKTLINJER OCH STÖD I VÅRT KOMMUNIKATIONSARBETE. osthammar.se

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Sweden AB. Stilmall & presentation av grafisk profil

EXPO XTRA MARKNADSFÖRINGSYTOR OCH REKLAMPLATSER PÅ KISTAMÄSSAN

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Programmering A. Johan Eliasson

F4. programmeringsteknik och Matlab

Användarhandledning Version 1.2

Laboration 1 - Grunderna för OOP i Java

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Som man sår får man skörda...

Lorem ipsum dolor sit aut VISUELL PLATTFORM

5-7 FEBRUARI 2019 EXPO XTRA MARKNADSFÖRINGSYTOR OCH REKLAMPLATSER PÅ KISTAMÄSSAN

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Landstinget Kronobergs grafiska profil

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

TDP013. Webbprogrammering och interaktivitet. Introduktion, HTML5, CSS & Selenium. Anders Fröberg Institutionen för Datavetenskap (IDA)

TDP013. Kursens nyckelpersoner. Kursens design. Kursens litteratur Kursens kunskapsfilosofi. Examinator: Anders Fröberg. Kursansvarig: Anders Fröberg

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

Uppdaterad i november Grafisk manual

Lösningsförslag till exempeltenta 2

GRAFISK PROFIL FÖR KUNGÄLVS KOMMUN

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

Krav på lösenordet? Inloggning i communityt Formulär för att registrera sig. ABFs community. Registrera dig som medlem i ABFs community

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Transkript:

Objektorienterad Programkonstruktion Föreläsning 6 Kodkonventioner Christian Smith ccs@kth.se 1

Kodkonventioner Regler för hur man ska skriva kod Kod bli mer lättläst och lättare att förstå och ändra i, om alla skriver på samma sätt Man brukar ha som tumregel att 80% av arbetet med ett program handlar om att underhålla existerande kod Framgångsrik kod används och underhålls ofta av någon annan än originalförfattaren Denna föreläsning baserar sig på skriften "Code Conventions for the Java(TM) Programming Language" utgiven av Sun Microsystems, den ursprungliga Javautvecklaren 2

Källfiler En källfil bör inte innehålla mer än 2000 rader Varje del av en källfil (fältdeklarationer, metoddeklartioner, mm) bör skiljas åt från sin omgivning med en tom rad. Kommentarer som beskriver ett block med kod bör komma precis innan det de kommenterar, utan åtskiljande tom rad Om flera klasser definieras i samma fil, bör den publika klassen beskrivas först 3

Ordning inom en källfil Inledande kommentarer import - rader klass- eller gränssnitt definition(er) /* * Classname * * Version information * * Date * * Copyright notice */ 4

Ordning inom en källfil Inledande kommentarer import - rader klass- eller gränssnitt definition(er) * Copyright notice */ import java.awt.*; /** * The class MyClass provides useful functionality */ public class MyClass extends yourclass{...... 5

Ordning inom en definition av en klass eller ett gränssnitt Kommentar om klassen/gränsnittet för dokumentation (/**...*/) Klass- eller gränssnittsdeklarationen Kommentar angående klass-/gränsnittsimplementation som inte passar i dokumentationen (/*...*/) Klassvariabler ( static) -public, protected, package, private Instansvariabler - public, protected, package, private Konstruktorer Metoder - Dessa bör grupperas efter funktion och inte efter åtkomst. Det är OK att stoppa in en privat klassmetod mellan två publika instansmetoder om de tematiskt hör ihop. Kommentarer till var och en av dessa bör komma precis ovan deklarationen 6

Rader Alla indenteringar ska vara 4 mellanslag (eller tab, om det blir lika långt) Rader ska vara max 80 tecken långa, inklusive blanksteg och tabbar Radbrytningar: efter komma före operatorer mellan två element av högre nivå placera ny rad vid samma nivå som motsvarande element på tidigare rad Flytta in ny rad 8 tecken om det blir bättre så 7

Exempel somemethod(longexpression1, longexpression2, longexpression3, longexpression4, longexpression5); myvar = somemethod1(longexpression1, somemethod2(longexpression2, longexpression3)); private static synchronized horkinglongmethodname(int anarg, Object anotherarg, String yetanotherarg, Object andstillanother) {... longname1 = longname2 * (longname3 + longname4 - longname5) + 4 * longname6; // BRA longname1 = longname2 * (longname3 + longname4 - longname5) + 4 * longname6; // DÅLIG 8

Mer Exempel if ((condition1 && condition2) (condition3 && condition4)!(condition5 && condition6)) { dosomethingaboutit(); if ((condition1 && condition2) (condition3 && condition4)!(condition5 && condition6)) { dosomethingaboutit(); //EXEMPEL PÅ DÅLIG FORMATTERING: if ((condition1 && condition2) (condition3 && condition4)!(condition5 && condition6)) { dosomethingaboutit(); //DEN HÄR RADEN ÄR LÄTT ATT MISSA 9

Kommentarer Före varje deklaration kommer en blockkommentar som beskriver fältet eller metoden. Kom ihåg att /** inleder en dokumentationskommentar Blockkommentarer indenteras till samma nivå som koden de beskriver Blockkommentarer inne i kod föregås av en tom rad /** * Returns the name as a String */ public String getname(){ String returnstring; /* build the return string */ returnstring = stringa + stringb;... 10

Kommentarer på samma rad Korta kommentarer om implementationen kan skrivas på samma rad. Om man har flera kommentarer i högerkant bör de indenteras lika if (a == 2) { return TRUE; else { return isprime(a); /* special case */ /* works only for odd a */ 11

Kommentarer på samma rad Korta kommentarer om implementationen kan skrivas på samma rad. Man kan använda dubbla snedstreck // för att kommentera bort slutet av en rad. Används också till att (tillfälligt) plocka bort några rader ur koden if (foo > 1) { // Do a double-flip.... else{ return false; // Explain why here. //if (bar > 1) { // // // Do a triple-flip. //... // 12

Variabeldeklarationer Försök begränsa koden till en deklaration per rad, och undvik under alla omständigheter att deklarera olika typer på samma rad int level; // indentation level int size; // size of table int int Object level; size; currententry; // indentation level // size of table // currently selected table entry 13

Variabeldeklarationer Deklarera variabler i början av det block där de används Undvik att återanvända samma namn på olika nivåer Initialisera om möjligt lokala variabler där de deklareras public void mymethod() { int int1 = 0; if (condition) { int int2 = 0;... // beginning of method block // beginning of "if" block 14

Klasser, gränsnitt och metoder Sätt första klammern { sist på deklarationsraden Indentera avslutande klammer till samma position Tom rad mellan metoder class Sample extends Object { int ivar1; int ivar2; Sample(int i, int j) { ivar1 = i; ivar2 = j; int emptymethod() { 15

Mellanslag Använd ett mellanslag mellan ett nyckelord och parentesen med dess argument Sätt mellanslag efter komman, och mellan binära operatorer (operator mellan två argument) a += c + d; a = (a + b) / (c * d); for (int i = 0; i < 5; i++) { n++; printsize("size is " + foo + "\n"); dosomethingnice(argument1, agument2); 16

Namn Klassnamn är substantiv, med inledande versal på alla ingående termer, tex FileViewer, MyButton, MemoryHog Gränssnitt följer samma regler som klasser, men kan vara adjektiv, tex Viewable Metoder inleds med verb, där alla ingående termer utom den första har inledande versal, ex: getname, printresulttoscreen Variabler är substantiv, där alla ingående termer utom den första har inledande versal, ex: name, currentobject Lokala variabler, som bara används i ett begränsat sammanhag kan vara en-bokstaviga om det underlättar läsbarheten i formler (undvik 'l'), ex: i, n, a Konstanter är helt i versaler med understreck mellan delarna, ex: PI, MAX_AGE 17

Om XML extensible Markup Language Använder 'taggar' för att förse texter med metainformation, så att resultatet kan läsas relativt enkelt av både människor och maskiner All data organiseras som element. Ett element kan bestå av ett par av taggar (en start-tag och en slut-tag) med text emellan. Taggarna anger då meta-information om texten mellan dem. Ett element kan också vara en ensam (empty element) tag, som kodar någon specialfunktion Start-taggar och ensamma taggar kan dessutom innehålla attribut som ger extra information. <text font="courier">detta är lite text</text> 18

XML-exempel <kapitel nummer="1"> <rubrik>lorem Ipsum </rubrik> <text> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco <fetstil>laboris</fetstil> nisi ut aliquip ex ea commodo consequat.<radbryt /> Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. </text> </kapitel> 19