webForumDet fria alternativet

Programmerings problem i Visual Basic .NET

28 svar · 3 268 visningar · startad av Mycodez · sida 2 av 2

NickemannenMedlem sedan aug. 20003 575 inlägg
#21

Mycodez skrev:

gbx = groupbox och vi har lärt oss att koda såhär :( alla dim ska var i toppen för ha allt sånt samlat på ett ställe och ha massa dim:ar mitt i koden. men ska tänka på vad du säger :)

jag tycker du skall prata med din lärare om Hungarian notation, det är något som mer och mer ses som något mycket dåligt.
Ett starkt tips är Clean Code av Uncle Bob aka Robert Steve Martin, där han skriver om hur man bör skriva kod för att öka förståbarheten.

T.ex. en metod skall max göra en sak. (en sak kan vara att ha en if-sats som anropar en annan sak). Dvs den gör en sak skiljer på ett värde och anropar andra metoder.

Det som metoden utför skall vara beskrivet i metodnamnet.
osv.

NickemannenMedlem sedan aug. 20003 575 inlägg
#22

Här är ett exempel på en start.
Jag skrev aldrig färdigt det för jag hann inte, men jag hoppas jag får igenom min poäng när det gäller namngivningar (jag har antagligen inte valt helt rätt ord ändå i detta fallet, det är att hitta bra namngivningar som är svårigheten med programmering tycker jag).

I den koden jag skriver här finns inget med Winform's eller liknande med, tanken är att denna klassen anropass och läses av för att populera ett eventuellt user interface.

Ett bra exempel här är att jag har slängt undan en massa komplex kod som en eventuell läsare kanske inte är så intresserad av. Så när han går in och läser metoden Guess(character as Char) så ser han snabbt i stora drag vad metoden gör, är han intresserad av detaljer går hann vidare till de metoder som han vill grotta sig ner i.

Public Class Hangman
    Private _wrongCharacters As IList(Of String)
    Private _correctWord As String
    Private _answerWord As String
    Private _retriesLeft As Integer

    Public ReadOnly Property WrongCharacters As IEnumerable(Of String)
        Get
            Return _wrongCharacters
        End Get
    End Property

    Public ReadOnly Property RetriesLeft As Integer
        Get
            Return _retriesLeft
        End Get
    End Property

    Public ReadOnly Property AnswerWord As String
        Get
            Return _answerWord
        End Get
    End Property

    Public ReadOnly Property CorrectWord As String
        Get
            Return _correctWord
        End Get
    End Property

    Public Sub StartNewGame(ByVal correctWord As String, ByVal numberOfTries As Integer)
        _correctWord = correctWord
        _retriesLeft = numberOfTries
        _wrongCharacters = New List(Of String)
        SetupAnswerWord()
    End Sub

    Public Sub Guess(ByVal character As Char)
        If _wrongCharacters.Contains(character) OrElse AnswerWord.Contains(character) Then
            Throw New ArgumentException("Du har redan gissat på den bokstaven")
        End If

        If RetriesLeft <= 0 Then
            Throw New ArgumentException("Antalet försök har överskridits")
        End If

        If Not CorrectWord.Contains(character) Then
            HandleWrongGuess(character)
            Return
        End If

        HandleCorrectGuess(character)
    End Sub

    Private Sub HandleCorrectGuess(ByVal character As Char)
        Dim findIndexesOfCharacter = New Regex(character)

        Dim matches = findIndexesOfCharacter.Matches(CorrectWord)

        For Each match As Match In matches
            ReplaceCharacterAtIndexInAnswerWord(match.Index, character)
        Next
    End Sub

    Private Sub HandleWrongGuess(ByVal character As Char)
        _wrongCharacters.Add(character)
        _retriesLeft = RetriesLeft - 1
    End Sub

    Private Sub SetupAnswerWord()
        _answerWord = New String(Char.Parse(" "), CorrectWord.Length)
    End Sub

    Private Sub ReplaceCharacterAtIndexInAnswerWord(ByVal index As Integer, ByVal character As Char)
        ' and so on.......
    End Sub
End Class
LaspMedlem sedan juli 200012 980 inlägg
#23

Bra Nickemannen, jag gjorde ett inlägg under fotbollen om Ungersk Notation som är en produkt av äldre tiders språk och att datorerna för utveckling inte hade samma kapacitet.
Det är ju så att vi skrev nästan för hand från början.
Nu med nya språk, helt andra krav så är möjligheten att förklara viktigt.
Så nu när matchen är över läser jag ett underbart exempel inlagt av Nickemannen.
Det är så wF skall vara tycker Lasp. Tack.

NickemannenMedlem sedan aug. 20003 575 inlägg
#24

Lasp skrev:

Bra Nickemannen, jag gjorde ett inlägg under fotbollen om Ungersk Notation som är en produkt av äldre tiders språk och att datorerna för utveckling inte hade samma kapacitet.
Det är ju så att vi skrev nästan för hand från början.
Nu med nya språk, helt andra krav så är möjligheten att förklara viktigt.
Så nu när matchen är över läser jag ett underbart exempel inlagt av Nickemannen.
Det är så wF skall vara tycker Lasp. Tack.

Ja det användes förr i tiden när språken inte var typade för att man skulle veta vad det var för något. Tittar man på wikisidan om hungarian notation så har dom ett skräckexempel där man tar in 16 tecken innan man skriver namnet på variabeln, det är databaskolumnsinfo osv osv.

Oftast tycker jag att namnet i sig talar om vad det är för datatyp, t.ex. name eller age, rätt självklart att det handlar om integer och name, men är man osäker håll musen över så får man direkt se vad det är för något eller f12 så man kommer till deklarationen.

dAEkMedlem sedan feb. 20041 816 inlägg
#25

Nickemannen skrev:

Ett starkt tips är Clean Code av Uncle Bob aka Robert Steve Martin, där han skriver om hur man bör skriva kod för att öka förståbarheten.

+1.

Ja, den är riktigt, riktigt bra. Alla utvecklare borde ha läst den och minst en gång.

Nackdelen är att man tycker att andras och ens egen kod är skit efteråt. :)

ZaimanMedlem sedan dec. 20014 239 inlägg
#26

dAEk skrev:

+1.

Ja, den är riktigt, riktigt bra. Alla utvecklare borde ha läst den och minst en gång.

Nackdelen är att man tycker att andras och ens egen kod är skit efteråt. :)

Är det den här boken http://www.adlibris.com/se/product.aspx?isbn=0132350882 ni refererar till?

LaspMedlem sedan juli 200012 980 inlägg
#27

Ja det är rätt. Hittade inte länken till bokklubben i Malmö, det var ju ett tag sedan.
Men föreläsningen från tidigare Öredev skall nog ligga kvar med exempel ute på nätet.

NickemannenMedlem sedan aug. 20003 575 inlägg
#28

http://vimeo.com/12643301
Var där han är en riktigt bra talare.

MycodezMedlem sedan feb. 2010445 inlägg
#29

Jag har löst mina problem nu :) hade tänkt lite galet :) bara men vill ni testa en slarvig verison av mitt hänga gubben så e det bara att lämna en kommentar i min blogg.

https://www.mycodez.se

137 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)