Bilagor

Bilaga 1 Riktlinjer för nyutvecklande av projekt i Visual C++
Bilaga 2 Delar av enkätsvaren i diagramform

Bilaga 1

Riktlinjer för nyutvecklande av projekt i Visual C++

  • Variabelnamn skall vara beskrivande och bestå av både gemener och versaler. Språket skall i möjligaste mån vara engelska. Måste man i undantagsfall använda svenska skall åäöÅÄÖ skrivas som aaoAAO. Till exempel nVertexNumber eller nCyllringsHangsel. Versalerna skall finnas i början på varje beskrivande ord.

  • Funktionsnamn skall vara beskrivande och bestå av både gemener och versaler. Samma språkregler gäller här som för variabelnamnen. Versalerna skall finnas i början på varje beskrivande ord. Prefix enligt typreglerna skall läggas till på funktionsnamnen om funktionen returnerar ett värde av en typ, inklusive void.

    Namnregler för klasser

    Generella klasser skall ha CG ( ClassGeneral ) som prefix. Till exempel CGAllFact.

    Projektspecifika klasser skall gå att identifiera projektet i prefixet. Klasser till projektet RoofCon skall ha CR ( ClassRoofcon ) som prefix. Till exempel CRCielingSpecial.

    Vissa klasser skall dessutom gå att identifiera genom ett postfix. Dessa är:

    Klass av "typen"
    Postfix
    Exempel
    CPtrArray
    CPtrList
    CDialog
    Ar
    List
    Dlg
    CRWallTypeAr
    CRWallTypeList
    CRAboutDlg

    En CObArray som man i enkomt skapat objekt för att ha i vektorn skall ha prefixet a. Till exempel aPntSquare för en vektor med instanser av klassen CGPoint.

    En CObArray som man bara lagrar pekare till objekt och egentligen inte objekten skall ha prefixet ap. Till exempel apPntSquare för en vektor i vilken man lagrar pekare till objekt av klassen CGPoint.

    Namnregler för variabler

    Typ
    Prefix
    Typ
    Prefix
    Allmänt
    medlemsvariabler
    globalvariabel
    statisk medlemsvariabel
    Vanliga typer
    unsigned
    char
    int
    short
    long
    float
    double
    strängar
    \0 terminerade strängar
    void(funktioner)

    m_
    g_
    s_

    u
    c
    i
    n
    l
    f
    d
    sn
    sz
    v
    Windowstyper
    COLORREF
    RECT
    POINT
    SIZE
    HANDLE
    UINT
    BOOL
    WORD
    BYTE
    DWORD
    Tilläggs prefix
    pointer
    array


    cr
    rc
    pt
    size
    h
    ui
    b
    w
    by
    dw

    p
    a

    Variabler som är av "typen" en klass skall inte ha något prefix, utom dessa:

    Klass
    Prefix
    Exempel
    CString
    CRect
    CGRect
    CPoint
    CGPoint
    CSize
    CPen
    CBrush
    CDC
    s
    Rect
    Rc
    Point
    Pnt
    Size
    Pen
    Brush
    DC
    sWallName
    RectOkButton
    RcCancelButton
    PointCrossing
    PntCrossing
    SizeWallSquare
    PenBlue
    BrushDotted
    DCMyOwn

    Variabler som är av "typen" en pekare till en klass skall ha prefixet p.
    Exempel

    Övriga begynnelsebokstäver skall inte användas.

    För heltal skall typen short användas, utom då man behöver 32 bitars heltal eller vid kommunikation med Windows där Windows har använt typen int.

    Variabelnamnen x och y får användas som integers utan något prefix.

    Variabelnamn som bara består av ett tecken exklusive prefixet skall också vara av gemen storlek.

    Makron skrivs med versaler.

    Konstanter skrivs med versaler och börjar med $.

    För loopvariabler godtas även n1 ,n2 ,n3 ,... som fullständiga variabelnamn.

    Exempel
    m_pPositions
    apGarbage
    nFirstVertex
    DECLARE_DYNAMIC
    $MAXLENGTH
    fx, fy
    en medlemsvariabel av typen pekare till en klass
    en array av pekare
    ett vanligt heltal
    ett makro
    en konstant
    ett teckens variabler med prefix

    Namnregler för egna strukturer

    Strukturerna skall ha t som prefix och _tab som postfix. Variabler av den typen skall ha prefixet t. Vid typedef så skall typen skrivas som strukturen utan postfix och helt med versaler.

    Exempel

    	struct tRoofParameters_tab {
    	    float fHeight;
    		float fAngle;
    		float fWidth;
    		float fLength;
    	};
    
    	struct tRoofParameters_tab	tRoofOne;
    	struct tRoofParameters_tab*	ptRoofTwo;
    
    	typedef struct tRoofParameters_tab {
    	    float fHeight;
    		float fAngle;
    		float fWidth;
    		float fLength;
    	} TROOFPARAMETERS;
    
    	TROOFPARAMETERS        tRoofOne;
    	TROOFPARAMETERS*       ptRoofTwo;
    

    Olika konstanter skall följa dessa regler.

    IDR_
    IDD_
    IDC_
    IDI_
    IDB_
    IDS_
    IDM_
    ID_
    För multipla resurstyper till exempel menyer och acceleratorer.
    För dialogresurser.
    För dialogkontroller och för markörresurser.
    För ikonresurser.
    För bitmapsresurser.
    För strängresurser.
    För menyalternativ som inte använder MFC’s kommandoarkitektur.
    För menyalternativ som använder MFC’s kommandoarkitektur.

    Konstanternas värde skall inte vara lägre än 100.

    Kommentarer till koden

    .cpp

    I .cpp filen skall funktionerna och procedurerna ha en "rubrik" enligt följande:

    //-------------------------------------------------------------
    short nSampleFunction(short nNumber, float fValue)
    tom rad
    //
    //   Här skall funktionen kommenteras med en utförlig 
    //   kommentar.
    //
    //   input  - 
    //      short nNumber   : Kommentar till variabeln
    //      float fValue    : Kommentar till variabeln
    //
    //   return - 
    //      Kommentar till vad funktionen returnerar
    //
    //
    //   written: 951016 ANI
    //   updated: 951103 ANI
    //
    
    funktionens kod

    För identifiering av vem som skrivit, respektive updaterat koden används första bokstaven ur förnamnet och de två första bokstäverna i efternamnet. ÅÄÖ ersätts till AAO. Till exempel Andreas Nilsson blir ANI och Mikael Hägglund blir MHA.

    Övriga kommentarer i koden skall se ut precis som i c. Notera att kommentaren inte är indragen, utan den står vid vänstra kanten.

    Exempel

       while (szTmp1[i1]=szTmp2[i1++]);
    //ANI--
    //     Kommentar till koden
    //.....
       szTmp1[i1]=0;
    

    .h

    .h filen skall förses med en kommentar överst med övergripande kommentarer kring klassen, arvhistorik samt medlemsvariablerna skall kommenteras här. Arvhistoriken skall kommenteras från och med den sista MFC klassen eller om ingen MFC klass är anfader, skall kommentarerna ges från basklassen. Multipelt arv skall visas genom att man sätter komma(,) mellan klasserna och låter dem vara på samma nivå i arvsträdet.

    //
    //   class: CMySpecialClassII
    //   
    //   En beskrivning av klassen ges här.
    //
    //   derived from:
    //      CPropertyPage
    //         CMySpecialClass0
    //            CMySpecialClassIa, CMySpecialClassIb
    //
    //   members - 
    //      m_fMyFloatValue : Kommentar till variabeln
    //      m_hMyWindow     : Kommentar till variabeln
    //
    //
    #include "..."
    :
    class CMySpecialClassII : 
          public CMySpecialClassIa, public CMySpecialClassIb
    
    klassens kod

    Kommentarerna till funktionerna och procedurerna skrivs i .cpp filen.

    Bilaga 2

    Delar av enkätsvaren i diagramform.

    Vi frågade efter hur de prioriterade olika saker i programmet. Av enkätsvaren att döma prioriterar användarna flexibilitet, användarvänlighet och ökad säkerhet (det vill säga stabilitet hos programmet) främst. Vi vill poängtera att vi fick in få svar, endast sju stycken, varför det är svårt att dra alltför långtgående slutsatser.


    Diagram 1. Staplarna anger andel av maximal poäng.

    Vi frågade efter hur de prioriterar utdatan ur programmet. Här prioriterade de takplansritandet högst och det stämmer väl överens med programmet som vi håller på med.


    Diagram 2. Staplarna anger andel av maximal poäng.

    Enkätsvaren i siffror. Vi bad de svarande att de skulle ange ordningen på hur de prioriterar olika saker i programmet. (Se tabell 1) 1 är viktigast och 6 minst viktigt.

    Program-
    prioriteter
    Ekenfors

    Villa-
    element
    Larsson
    hus
    Eksjö
    hus
    Nya
    Mellby
    Nordiska
    trähus
    Anderssons
    sågverk

    Flexibilitet
    Användarvänlighet
    Ekonomi
    Snabbhet
    3d-presentation
    Ökad säkerhet
    2
    3
    5
    6
    4
    1
    4
    1
    3
    5
    6
    2
    1
    3
    5
    4
    6
    2
    1
    2
    5
    3
    6
    4
    3
    2
    4
    5
    6
    1
    1
    2
    5
    3
    6
    4
    5
    1
    3
    6
    4
    2
    Tabell 1

    Tabell 2 visar hur de svarande prioriterar utdata. 1 är viktigast och 3 minst viktigt.

    Utdata-
    prioriteter
    Ekenfors

    Villa-
    element
    Larsson
    hus
    Eksjö
    hus
    Nya
    Mellby
    Nordiska
    trähus
    Anderssons
    sågverk

    Takplansritning
    Samkörd kaplista
    Samkörd kalkyl
    1
    2
    3
    1
    2
    3
    1
    2
    3
    1
    2
    3
    2
    3
    1
    1
    2
    3
    1
    3
    2
    Tabell 2

    Resultatet av enkäten sammanfaller väl med våra egna prioriteringar när vi skrev RoofCon.




    Senast ändrad 1996-06-19 av
    Andreas Nilsson

    . . . . . . . . . . . . . . . . . . . . . .