JavaRush /Java-Blog /Random-DE /Kaffeepause Nr. 83. Welche Charaktereigenschaften zeichne...

Kaffeepause Nr. 83. Welche Charaktereigenschaften zeichnen herausragende Programmierer aus? Einfaches Programmierhandbuch: Funktionen und Methoden

Veröffentlicht in der Gruppe Random-DE

Welche Charaktereigenschaften zeichnen herausragende Programmierer aus?

Quelle: Hackernoon Was unterscheidet großartige Programmierer von guten? Ich habe zwei Charaktereigenschaften entdeckt, die großartige Programmierer gemeinsam haben: Sie waren konsequent und beharrlich. Diese Eigenschaften an sich sind kein Zeichen von Genie, und wenn gewünscht, kann jeder diese Eigenschaften entwickeln und sie dann in seiner Arbeit anwenden. Kaffeepause Nr. 83.  Welche Charaktereigenschaften zeichnen herausragende Programmierer aus?  Einfache Programmieranleitung: Funktionen und Methoden - 1

1. Seien Sie konsequent

Gute Programmierer programmieren nicht gelegentlich. Vielmehr haben sie einen konkreten Zeitplan, um ihre Kenntnisse und Fähigkeiten in ihrer Freizeit zu verbessern: vor oder nach der Arbeit und am Wochenende. Beispielsweise verbringt ein Programmierer, den ich kenne, die ersten zwei Stunden seines Tages – sechs Tage die Woche – mit persönlichen Lernprojekten oder Aufgaben. Das soll nicht heißen, dass solche Leute rund um die Uhr Code schreiben. Sie haben, wie wir alle, Zeit für ihr Privatleben, ihre Verpflichtungen und Interessen. Aber sie sind konsequent: Programmieren ist für sie zur Gewohnheit geworden. Wie kann man konsequent werden? Das ist es, was viele von uns erreichen wollen. Ich habe festgestellt, dass es mehrere Möglichkeiten gibt, dies zu tun. Bestimmen Sie zunächst die Anzahl der Stunden pro Woche, die Sie mit Programmieren verbringen können. Diese Zahl ist Ihre wöchentliche „Programmmeilenzahl“. Als ehemaliger Distanzläufer bin ich jede Woche eine bestimmte Anzahl Meilen gelaufen. Das war mein wöchentlicher Lauf. Jetzt habe ich meine Programmiererfahrung: Das ist die Anzahl der Stunden, die ich jede Woche mit Programmieren verbringe. Die meisten Menschen vernachlässigen diese Phase. Sie springen direkt zu dem Projekt, das sie abschließen möchten, oder zu dem Thema, das sie studieren möchten, ohne darüber nachzudenken, wie sie die Zeit dafür finden. Daher arbeiten sie nachts oder 16 Stunden am Tag. Bei diesem Ansatz gibt es ein Problem: Er ist auf lange Sicht nicht nachhaltig. Die Verbesserung Ihrer Fähigkeiten als Programmierer ist nicht etwas, was Sie im Laufe von ein oder zwei arbeitsreichen Wochen tun. Stattdessen muss man lange und kontinuierlich daran arbeiten. Aus diesem Grund ist es so wichtig, Ihre Programmiererfahrung zu ermitteln. Erwägen Sie dazu die Verwendung eines Zeitprotokolls, um zu sehen, wo und wie Sie Ihre Zeit verbringen. Nehmen Sie ein Blatt Papier und schreiben Sie alles auf, was Sie jeden Tag tun und wie lange Sie es tun, einschließlich des fünfminütigen Überprüfens von sozialen Medien oder E-Mails. Dadurch wird es für Sie einfacher, freie Plätze in Ihrem Stundenplan zu finden. Möglicherweise haben Sie sogar etwas mehr Zeit für Hausarbeit oder Fernsehen. Anschließend können Sie einen Programmierschulungsplan erstellen, an den Sie sich halten müssen. Ein Trainingsplan ist eine der effektivsten Möglichkeiten, konsequent zu sein. Es ermöglicht Ihnen, alle Details im Voraus zu verteilen. Alles, was Sie tun müssen, ist, diesen Plan jeden Tag in die Tat umzusetzen. In meinen Lauftrainingsplänen war festgelegt, wie viele Kilometer ich jeden Tag laufen musste und wie schnell ich sie laufen musste. Jetzt erstelle ich Programmier-Trainingspläne, die demselben Zweck dienen: Sie sagen mir, was ich jeden Tag tun muss. Am Ende des Tages öffne ich Evernote auf meinem Computer und erstelle einen Zeitplan für den nächsten Tag. Hier ist ein Beispiel:
6:30 - 8:30 - Programmierung
  1. Rezension des Python-Anki-Karteikartendecks (20 Minuten).
  2. Lösung des Word Cloud-Datenproblems.
Ich verfolge diesen Prozess während meines gesamten Arbeitstages: Ich bestimme, wie viel Zeit ich für eine Aufgabe aufwenden werde und was ich in dieser Zeit erreichen möchte. Außerdem erstelle ich einen monatlichen Trainingsplan. Darin beschreibe ich drei Dinge, die ich im kommenden Monat erreichen, lernen oder abschließen möchte. Früher habe ich vierteljährliche Pläne gemacht. Aber dann habe ich festgestellt, dass sich in drei Monaten zu viel ändern kann. Ein monatlicher Plan bietet genügend Zeit, um wichtige Schritte in Ihrem Training zu unternehmen.

2. Seien Sie hartnäckig

Die zweite Eigenschaft guter Programmierer ist Beharrlichkeit. Sie arbeiten alle Möglichkeiten zur Lösung des Problems durch und finden die Antwort. Das scheint das Geheimnis zu sein. Die großartigen Programmierer, die ich getroffen habe, haben eine unheimliche Fähigkeit, Probleme aufzuschlüsseln und unterschiedliche Lösungen oder Lösungen für eine schwierige Situation zu finden. Kurz gesagt, sie verfügten über ein System zur Lösung von Problemen. Ich hatte in der High School nie ein Lösungssystem. Wann immer ich im Matheunterricht eine Aufgabe bekam, stürzte ich mich sofort mit voller Kraft darauf. Dann habe ich das weiter gemacht, als ich mit dem Programmieren angefangen habe. Kein Plan. Es gibt kein System. Keine Zeit zum Nachdenken. Keine Analyse. Es überrascht nicht, dass ich in beiden Fällen unnötigerweise durchdrehte und ständig auf Hindernisse stieß. Ich habe jetzt ein Problemlösungssystem, das mir hilft, ein Problem aufzuschlüsseln, um verschiedene Optionen zu finden. Der erste Schritt in meinem Problemlösungsprozess besteht beispielsweise darin, das Problem darzulegen. Das ist das erste. Sobald ich das Problem verstanden habe, konzentriere ich mich auf jeden der folgenden Schritte.
  • Analyse der Eingabedaten und erwarteten Ergebnisse.
  • Erstellung eines Aktionsalgorithmus.
  • Pseudocode schreiben.
  • Lösung einer vereinfachten Version des Problems.
Ich hoffe, Sie verstehen die Idee. Die Etappen sind vielleicht nicht einfach, aber sie sind machbar. Indem wir ein schwieriges Problem lösen, werden wir bessere Menschen. Es weckt auch Selbstvertrauen. Sobald wir ein schwieriges Problem gelöst haben, sind wir bereit für neue.

3. Einstellung zu Problemen?

Auf dem Weg, bessere Programmierer zu werden, müssen wir noch etwas anderes berücksichtigen: die Einstellung. Sie müssen eine neue Herangehensweise an Probleme und Unklarheiten haben. Eines Tages stellte ich einem leitenden Entwickler einige Fragen zu einem Problem, an dem ich feststeckte. Ich war verwirrt und enttäuscht. Auch der Entwickler war zunächst verwirrt. Seine Antwort schockierte mich jedoch. „Wow, das ist ein cooles Problem“, sagte er. Die Details, die er entdeckte, weckten sein Interesse. Das heißt nicht, dass großartige Programmierer nicht auch in irgendeinem Problem stecken bleiben. Sie bleiben stecken. Aber der Unterschied liegt in der Einstellung. Die Lektion, die ich an diesem Tag gelernt habe, war: Gute Programmierer haben keine Angst davor, sich ins Unbekannte zu wagen. Sie verstehen, dass sie durch die Untersuchung dieses Problems auf jeden Fall etwas Neues lernen werden. Wir können viel lernen, indem wir andere Programmierer studieren. Aber letztendlich liegt die Verantwortung bei uns: Wir müssen jeden Tag an die Arbeit gehen und Maßnahmen ergreifen.

Einfaches Programmierhandbuch: Funktionen und Methoden

Quelle: DZone Was macht eine gute Funktion oder Methode aus? Dies erfordert eine Kombination von Faktoren, von denen jeder einzelne wichtig ist. Schauen wir uns vier der wichtigsten an. Kaffeepause Nr. 83.  Welche Charaktereigenschaften zeichnen herausragende Programmierer aus?  Einfache Programmieranleitung: Funktionen und Methoden - 2

Aussagekräftiger Name

Funktionen sollten Namen haben, die ihren Zweck oder ihre Funktionalität beschreiben. Wenn eine Funktion einen aussagekräftigen Namen hat, ist ihr Zweck leicht zu lesen und zu verstehen. Wenn der Zweck der Funktion beispielsweise darin besteht, einen Kunden anhand seiner ID zu finden, könnte ein guter Name findCustomerById(id: String) lauten . Eine andere Option könnte findCustomer(id: String) sein . Dabei impliziert die Funktionssignatur, dass der Käufer anhand seiner ID gefunden wird. Das Wort „finden“ impliziert auch, dass der Käufer gefunden werden kann oder nicht. Wenn der Funktionsname in getCustomer(id: String) geändert wird , ändert sich seine Bedeutung, da er jetzt kein Rollback impliziert; Der Client wird entweder gefunden oder die Funktion schlägt fehl und löst möglicherweise eine Ausnahme aus. Beide Namen sind gültige Namen für eine Funktion, haben jedoch unterschiedliche Bedeutungen und daher müssen auch ihre Implementierungen unterschiedlich sein.

So wenige Parameter wie möglich

Ich halte mich gerne an die Dreierregel. Das bedeutet, dass die Funktion drei oder weniger Parameter haben darf. Wenn eine Funktion mehr als drei Parameter erfordert, sollte sie neu geschrieben und die Parameter in einem Datenbehälter abgelegt werden, z. B. seiner Klasse, Datenklasse, einem JavaScript-Objekt usw. Dies ist eine einfache Möglichkeit, die Anzahl der Parameter zu reduzieren und Daten innerhalb einer Anwendung zu organisieren. Nehmen wir zum Beispiel eine Funktion mit identischem Verhalten, aber unterschiedlichen Signaturen:
fun addCustomer(
  firstname: String,
  lastname: String,
  streetAddress: String,
  city: String,
  zipCode: String
)
Hier ist eine weitere Option:
data class Address(
  val street: String,
  val city: String,
  val zipCode: String,
  val streetNumber: String
)

data class Customer(
  val firstname: String,
  val lastname: String,
  val address: Address
)

fun addCustomer(customer: Customer)

Die Funktion macht das, was erwartet wird

Eine Funktion muss das tun, was von ihr erwartet wird. Nicht mehr und nicht weniger. Wenn die Funktion findAddress(latitude, longitude) heißt , sollte sie die Adresse an den angegebenen Koordinaten finden oder, wenn die Adresse nicht in Koordinaten konvertiert werden kann, None , null , Empty oder einen anderen Typ zurückgeben, der für die angegebene Sprache geeignet ist. Die Funktion sollte nichts anderes tun, z. B. nach Adressen in der Nähe suchen oder Koordinatendatensätze erstellen. Eine Funktion kann Nebenwirkungen wie Protokollierung oder Analyse haben, diese sind jedoch für die Eingabe und Ausgabe unsichtbar.

Die Funktion kann getestet werden

Funktionen müssen so gestaltet sein, dass sie getestet werden können. Im vorherigen Codebeispiel habe ich die Funktion addCustomer definiert , aber keinen Rückgabetyp definiert, sodass ihre Testbarkeit fraglich ist. Natürlich kann es je nach interner Implementierung mithilfe von Mocks oder Spys getestet werden. Dies kann durch einfache Angabe des Rückgabetyps erreicht werden:
fun addCustomer(customer: Customer): Customer
Mit dieser Funktionssignatur können wir die hinzugefügte Client-Entität an die aufgerufene Komponente zurückgeben. Wir können auch prüfen, ob die Funktion mit diesem Client-Objekt das tut, was sie tun soll (d. h. ihm eine eindeutige Kennung zuweisen).
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION