Probleme beim Einloggen
Frank Caputo Java Revisor
Hallo,
als erfahrener Java-Muttersprachler biete ich auch Code-Reviews an. Dabei achte ich vor allem auf Lesbarkeit (ich bin der Meinung, dass guter Code auch von Nichtprogrammierern gelesen werden kann) und Einfachheit.
Einfach melden per Xing-Nachricht oder info(ätt)frankcaputo.de
Viele Grüße
Frank Caputo
Karl Heinz Marbaise
+25 weitere Kommentare
Letzter Kommentar:
Nur für XING Mitglieder sichtbar
R.S. schrieb:
danke für den Tipp.
Es sollte immer etwas geben, was die Fachabteilung lesen und verstehen kann. Und was so detailliert ist, dass sich der "vollständige Code" daraus ableiten lässt. Wenn das der Code selber ist, ist das optimal, nur wird das oft nicht gehen. Wenn das über Domain Driven Design gelingt, ist das auch gut. Das ist aber nicht der einzige Weg, es kann auch ein sorgfältig erstelltes, ausreichend genaues und kontinuierliches Fachkonzept sein (Welches ich persönlich Anforderung nennen würde).
Wichtig ist, dass es immer etwas geben muss, dass die Fachabteilung lesen und verstehen kann, und dass keine undokumentierten "Nebenabsprachen" nur im Code zu finden sind.
Viele Grüße
Rainer Winkler
Gregor Elke Suche Frontend-Kollegen und Pairing Partner in Hamburg
Hallo,
ich bin kein Recruiter, HR, Personaler whatever. Ich bin Entwickler bei der Firma WowBiz und schreibe das hier aus eigenem Antrieb. Ich denke das sagt schon einiges über die Firmenkultur bei uns aus.
Wir sind eine kleine Agentur aus Hamburg, die sich auf e-Commerce und Social Media spezialisiert hat. Wir arbeiten interdisziplinär, meine UX-Design Kollegen sitzen neben mir und wir tauschen uns intensiv aus. Wir organisieren uns möglichst lean/agil folgend aber keinem Dogma, sondern ganz im Sinne von permanentem Lernen versuchen wir unsere Zusammenarbeit stets zu verbessern. Was uns fehlt ist ein weiterer Entwickler im Web-Frontend-Bereich, ein Pendant zu mir sozusagen, da ich eher im Backend zuhause bin.
Daher suchen wir Verstärkung hier. Die Details kannst du hier nachlesen:
Was ich dazu eigentlich nur Ergänzen will ist: Das was in dem Jobangebot unter "wir bieten" steht, kann ich nur bestätigen. 20%-Regelung (1 Tag pro Woche an anderen, eigenen Projekten arbeiten), gewisse Freiheiten in der Gestaltung der eigenen Arbeitszeit und vor allem echte Beteiligung bei der Mitgestaltung der Firma und der Zusammenarbeit.
Es würde uns, und mich persönlich, freuen dich bald zu treffen, einfach bewerben oder schreib mir deine Fragen, wenn du welche hast.
Gruß
Gregor
Marc Bless Jobangebot: Agile .NET CCDeveloper in Karlsruhe
* Softwareentwicklung bei Softwareprojekten in der Medizintechnik
* Agiles Arbeiten im Scrum-Team
* Tägliche Umsetzung von TDD, Pairing, Clean Code
* Entwicklung mit C#.NET 4.0, WPF, WCF
* Continuous Integration (VS2010, TFS)
Achtung! "agil", "Scrum" und "CCD" sind bei uns keine Buzzwords. Wir leben das agile Mind-Set täglich und suchen deswegen auch Entwickler, die wirklich Scrum, XP, SOLID und CCD praktizieren wollen und können!
Meldet Euch für ein Angebot, das Ihr nicht ablehnen könnt :-)
PS: ich habe hier im CCD Forum kein wirklich passendes Unterforum gefunden... ist dies tatsächlich der einzige CCD-Job?!
Nur für XING Mitglieder sichtbar Refaktorisieren von GUI-Code
Hallo zusammen,
ich mach in diesem Forum mal einfach den Anfang, mein derzeit einziger Kunde kommt gestern einfach so mit einer neuen Anforderung. Er möchte beim Mouseover auf einem Knoten eines TreeView-Controls die entsprechende Beschreibung des Elements in einem Tooltip angezeigt bekommen. Ich hoffe mal, die Problemstellung wird aus dieser Beschreibung und dem folgenden Code dazu ausreichend ersichtlich.
Hier nun der Code, den ich im ersten Anlauf dafür erstellt habe:
<<
Protected mAktuellerKnotenIndex As Integer
Protected mAktuellerKnotenLevel As Integer
Private Sub treTestphasen_NodeMouseHover(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseHoverEventArgs) Handles treTestphasen.NodeMouseHover
If Not (e.Node Is Nothing) Then
If e.Node.Index <> mAktuellerKnotenIndex Or e.Node.Level <> mAktuellerKnotenLevel Then
Dim gesuchteID As Integer = CInt(e.Node.Tag)
Dim Tooltiptext As String = ""
Select Case e.Node.Level
Case 0 'Testphase
Dim Testphasenbeschreibung As String = "nicht vorhanden"
Try
Testphasenbeschreibung = DatasetTestpaketStarten.Testphasen.FindByID(gesuchteID).Beschreibung
Catch ex As Exception
'wenn DBNull, dann Beschreibungtext = "nicht vorhanden"
End Try
Tooltiptext = "Testphasenbeschreibung" & Environment.NewLine & Environment.NewLine & Testphasenbeschreibung
Case 1 'Testobjekt
Dim Testobjektbeschreibung As String = "nicht vorhanden"
Try
Testobjektbeschreibung = DatasetTestpaketStarten.Testobjekte.FindByID(gesuchteID).Beschreibung
Catch ex As Exception
'wenn DBNull, dann Beschreibungtext = "nicht vorhanden"
End Try
Tooltiptext = "Testobjektbeschreibung" & Environment.NewLine & Environment.NewLine & Testobjektbeschreibung
Case 2 'Testfall
Dim Testfallbeschreibung As String = "nicht vorhanden"
Try
Testfallbeschreibung = DatasetTestpaketStarten.Testfallbeschreibungen.FindByID(gesuchteID).Beschreibung
Catch ex As Exception
'wenn DBNull, dann Beschreibungtext = "nicht vorhanden"
End Try
Tooltiptext = "Testfallbeschreibung" & Environment.NewLine & Environment.NewLine & Testfallbeschreibung
Case 3 'Testdatenkombination
Dim TDKBeschreibung As String = "nicht vorhanden"
Try
TDKBeschreibung = DatasetTestpaketStarten.Testdatenkombinationen.FindByID(gesuchteID).Beschreibung
Catch ex As Exception
'wenn DBNull, dann Beschreibungtext = "nicht vorhanden"
End Try
Tooltiptext = "TDK-Beschreibung" & Environment.NewLine & Environment.NewLine & TDKBeschreibung
End Select
mAktuellerKnotenIndex = e.Node.Index
mAktuellerKnotenLevel = e.Node.Level
Dim BezugspositionTooltip As New System.Drawing.Point(e.Node.Bounds.X + e.Node.Bounds.Width + 10, _
e.Node.Bounds.Y + (e.Node.Bounds.Height \ 2))
ToolTipTreTestphasen.Show(Tooltiptext, treTestphasen, BezugspositionTooltip)
End If
End If
End Sub

>>
Ich finde dieses Beispiel insofern interessant, als dass es "unheiligen" GUI-Code notwendig macht (in den meisten Beispielen in Büchern und Fachzeitschriften wird dieses Thema ja oftmals eher stiefmütterlich behandelt ). Außerdem ist es meines Erachtens ein schönes Beispiel dafür, wie Anforderungen gerade im GUI-Umfeld reingekippt werden. Was auf den ersten Blick ziemlich einfach aussieht, kann bei Berücksichtigung aller Eventualitäten dann doch einigermassen komplex werden. Ich bin gespannt auf Eure Kommentare.
Gruß Matthias
Andreas Leue Mario Noack
+10 weitere Kommentare
Letzter Kommentar:
Patrick Lindemann
Hallo Allerseits,
meine Anmerkungen:
Verweise auf die Namespaces lieber importieren. System.Windows.Forms und System.Drawing muss man im Code nich unbedingt sehen. Wirkt sauberer.
Parameter: ByRef gehört (fast immer) verboten ;)
In den "ermittle..."-Funktionen werden Integers ByRef übergeben. Das birgt die Gefahr, dass durch spätere Änderungen innerhalb der aufgerufenen Routinen der Wert verändert wird, ohne dass das der Aufrufer merkt. Und zudem ist eine Referenzübergabe im vorhandenen Code überhaupt nicht notwendig.
An 2 anderen Stellen werden Objekte ByRef übergeben. Da dies sowieso geschieht, würde ich hierrauf auch verzichten.
Zu den "ermittle..".-Funktionen:
Da diese sich so ähnlich sehen, würde ich sie sofort in eine Basisklasse verlagern. Das könnte dann ungefähr so aussehen:
...
    Imports System.Environment
    Private Const keineBeschreibungVorhandenFuerTooltip = "..."
    Protected MustOverride ReadOnly Property BeschreibungTitel As String
    Public Function ermittleBeschreibungFuerTreeTooltip(ByRef TestobjektID As Integer) As String
        Dim Result As String = BeschreibungTitel & NewLine & NewLine
        Dim drTestobjekt As datasetTestpaketStarten.TestobjekteRow = Me.FindByID(TestobjektID)
        If Not drTestobjekt.IsBeschreibungNull Then
            Result &= drTestobjekt.Beschreibung
        Else
            Result &= keineBeschreibungVorhandenFuerTooltip
        End If
        Return Result
    End Function
Die jeweilige Ableitung überschreibt dann nur noch den Beschreibungstitel und der Code muss nur an einer Stelle gepflegt werden. Dadurch ist auch sichergestellt, dass der Tooltip immer das gleiche Muster hat.

Moderatoren

Infos zu den Moderatoren

Über die Gruppe "Clean Code Developer"

  • Gegründet: 11.03.2009
  • Mitglieder: 5.022
  • Sichtbarkeit: offen
  • Beiträge: 491
  • Kommentare: 2.987