Čistý kód: Inteligentní vývojář vs. Profesionální vývojář

Čistý kód: Inteligentní vývojář vs Profesionální vývojář pomocí příkladů Scala kódu

Dnes existuje mnoho typů vývojářů, s inženýrským diplomem nebo bez něj, mnoho lidí píše kód pro bydlení a / nebo zábavu.

Přesto je psaní výrobního kódu vždy složitější a náročnější než ostatní, rozlišujeme dva typy vývojářů, jeden je extrémně chytrý, ale vyvíjí méně úsilí na udržovatelný kód, zatímco druhý je profesionální se silnou vírou v udržovatelný, čitelný a čistý kód.

Profesionální vývojář bude mít méně fronty vývojářů čekajících na vysvětlení, jak používat jeho kód, zatímco inteligentní vývojář bude udržovat nekonečnou řadu lidí, kteří budou klást otázky týkající se jeho knihoven.

Inteligentní vývojáři

Všichni jsme se setkali s „inteligentním“ vývojářem, který píše složité matematické rovnice, nekonečný lambda výraz a extrémně obecný kód s malou nebo žádnou dokumentací. Ten, kdo nebude používat jiné knihovny a bude vyvíjet vše od nuly, jen proto, že to vědí lépe.

I když je to v pořádku, pokud jde o čistý kód, někteří inteligentní vývojáři selhávají špatně. Píší příliš obecný kód. Což s přidáním závislostí a procházení API bolí snadnost opakovaného použití kódu.

Profesionální vývojáři

Profesionální vývojáři jsou vzácným nálezem, obvykle zkušeným a mají velkou vášeň pro programování. Profesionální vývojáři vědí, že způsob, jakým píšou kód, je způsob, jakým jsou vnímáni svými kolegy. Podporují čistý kód a vysoké testovací pokrytí, zesměšňování, IT a v podstatě vše, co zajistí, že jejich podpis (kód) bude žít navždy. Věří v udržovatelný kód a jejich motto je:

Jasnost je KING!

Příklady čistého kódu Scala

Podívejme se na několik příkladů Scala kódu, které odlišují profesionální vývojáře od inteligentního:

Chytrý vývojář:

vlastnost SocketFactory rozšiřuje (SocketAddress => Socket)

Profesionální vývojář:

type SocketFactory = SocketAddress => Socket

SocketFactory je funkce, která vytváří Socket. Použití aliasu typu je v tomto případě lepší, opakovaně použitelné a čitelnější.

Vytváření kolekcí v měřítku:

Chytrý vývojář:

scala.collection.meable._
val set = Set ()

Profesionální vývojář:

import scala.collection.mutable
val set = mutable.Set ()

Ve druhém příkladu je snadné pochopit, jaký typ kolekce se používá, což je obvykle důležité při vytváření API v měřítku.

Při deklarování nových parametrů je lepší přidat také typ, takže je mnohem jasnější:

var set: mutable.Set [String] = mutable.Set ()

Efektní lambda výraz:

Chytrý vývojář:

val hlasy = Seq ((„scala“, 1), („java“, 4), („scala“, 10), („scala“, 1), („python“, 10))
val orderVotes = hlasů
  .groupBy (_._ 1)
  .map {case (což se počítá) =>
  (což se počítá doleva (0) (_ + _._ 2))
  } .toSeq
  .sortBy (_._ 2)
  .zvrátit

Profesionální vývojář:

val hlasy = Seq ((„scala“, 1), („java“, 4), („scala“, 10), („scala“, 1), („python“, 10))
val hlasováníByLang = hlasy.groupBy ({případ (lang, _) => lang})
val sumByLang = hlasyByLang.map (
{případ (lang, počet) =>
       val counttsOnly = countts.map ({case (_, count) => count})
       (lang, countsOnly.sum)
})
val orderVotes = sumByLang.toSeq
.sortBy ({case (_, count) => count})
.zvrátit

Příklad inteligentního vývojáře je stručný a správný, ale téměř každý čtenář bude mít obtížný čas na obnovení původního záměru autora. Strategie, která často slouží k objasnění, je pojmenovat průběžné výsledky a parametry uvedené ve druhém příkladu. Profesní příklad je pro člověka se základními znalostmi v oblasti Scala samozřejmý.

Vědět, kdy použít alias typu:

Chytrý vývojář:

zadejte IntMaker = () => Int
IntMaker

Profesionální vývojář:

třída ConcurrentPool [K, V] {
type Queue = ConcurrentLinkedQueue [V]
type Map = ConcurrentHashMap [K, Queue]
...
}

IntMaker je krátký a používá běžný typ. Přesto jsou fronty a mapy užitečné, protože komunikují účel a zvyšují stručnost.

Tam jsou některé příklady psaní čitelného, ​​profesionálního kódu vs pouze inteligentního kódu. Mějte na paměti, že kód musí být udržovatelný a použitelný, jinak smrdí!

Některé informace o klíčovém slově typu scala:

Klíčová slova typu Scala

  • Klíčové slovo typu v Scale může udělat mnohem víc než jen aliasing složitého typu na kratší jméno. Představuje typové členy. Scala také umožňuje třídě mít členy typu. Při provádění kontroly typu systém typu jednoduše nahradí alias skutečným typem.
  • Na členy typu lze také nahlížet jako na dvojice generik, protože většinu věcí, které můžete s generiky implementovat, lze převést na členy abstraktního typu.

Příklad

základní rys {
  typ T

  def metoda: T
}

implementace třídy rozšiřuje Base {
  typ T = Int

  def metoda: T = 42
}

Typ je silná funkce, pro více informací klikněte zde.

Doufám, že vás tyto příklady povedou po cestě. Nezapomeňte, že výrobní kód se týká pouze čitelnosti a udržovatelnosti.

Jídlo s sebou

  • Deklarujte typy parametrů
  • Nezblázněte se s funkcemi lambda
  • V případě potřeby použijte klíčové slovo typu
  • Jasnost je KING!

Následujte mě na médiu pro více příspěvků o Scale, čistém kódu a softwarových inženýrech nesmyslech. Na zdraví!