Design principles 4 hackers - tech3camp (28142014)

545 views

Published on

3 Comments
3 Likes
Statistics
Notes
No Downloads
Views
Total views
545
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
6
Comments
3
Likes
3
Embeds 0
No embeds

No notes for slide

Design principles 4 hackers - tech3camp (28142014)

  1. 1. Design principles for hackers Kuba Marchwicki @kubem
  2. 2. @kubem
  3. 3. @kubem
  4. 4. Complex vs complicated Simple to read, learn and understand How easy it’s for novice programmer can maintain a significant program Make stuff simple but not simplistic @kubem
  5. 5. @kubem
  6. 6. @kubem
  7. 7. A flash is comming
  8. 8. What’s wrong with this code
  9. 9. Ktoś upowszechnił
  10. 10. Podstawowe zasady Wuja • Nazywaj zmiennej w taki a taki sposób • Stosuj komentarze w takich a nie innych przypadkach • Dziel funkcje na części zgodnie z takimi a takimi zasadami • Stosuj abstrakcje, symetrię, prawo Demeter • Testuj, testuj, testuj, red – green – …. • Refaktoruj @kubem
  11. 11. Ktoś położył podwaliny
  12. 12. Wartości • Kod jest podstawowym medium komunikacji w projekcie • Jako zespół jesteśmy jednością – Jak ja pójdę na skróty, to kolega będzie się męczył – I jako całośd i tak będziemy nieefektywni • Programy są częściej czytane niż pisane • Więcej czasu poświęcamy na modyfikację istniejącego kodu niż na tworzenie nowego @kubem
  13. 13. Implementation patterns • Komunikacja – kod źródłowy powinno się czytad jak książkę • Prostota – wprowadzaj złożonośd tylko wtedy, kiedy jest to konieczne • Elastyczność – elastycznośd to dodatkowa złożonośd, więc wprowadzaj ją tylko tam gdzie to konieczne @kubem
  14. 14. Implementation patterns • Lokalne konsekwencje – zmiana w jednym miejscu nie powoduje zmian w innych • Minimalne powtórzenia – DRY • Dane i logika razem – ponieważ dane i logika z reguły zmieniają się w tym samym czasie • Symetria– utrzymuj podobny poziom abstrakcji w obrębie metody / klasy @kubem
  15. 15. „Czysty kod jest prosty i bezpośredni. Czysty kod czyta się jak dobrze napisaną prozę. Czysty kod nigdy nie zaciemnia zamiarów projektanta; jest pełen trafnych abstrakcji i prostych ścieżek sterowania.” Grady Booch – to jeden z tych panów od UMLa
  16. 16. Affordance a quality of an object, which allows an individual to perform an action. For example, a knob affords twisting, and perhaps pushing, while a cord affords pulling @kubem
  17. 17. public class Sql { public Sql(String table, Column[] columns) public String create() public String insert(Object[] fields) public String selectAll() public String fieldByKey( String keyColumn, String keyValue) private String ColumnList(Column[] columns) private String valuesList( Object[] fields, final Column[] columns) }
  18. 18. abstract public class Sql { public Sql(String table, Column[] columns) abstract public String generate(); } public class CreateSql extends Sql { public CreateSql(String table, Column[] columns) @Override public String generate() } public class SelectSql extends Sql { public SelectSql(String table, Column[] columns) @Override public String generate() } public class InsertSql extends Sql { public InsertSql(String table, Column[] columns) @Override public String generate() private String valuesList(Object[] fields, final Column[] columns) } public class FindKeyBySql extends Sql { public FindKeyBySql(String table, Column[] columns, String keyColumn, String keyValue) @Override public String generate() } public class ColumnList { public ColumnList(Column[] columns) public String generate() }
  19. 19. George Miller
  20. 20. number of method parameters function / class size external API method names readable & descriptive naming @kubem
  21. 21. @kubem
  22. 22. Multi store memory model @kubem
  23. 23. Mihaly Csikszentmigalyi
  24. 24. ME-HI CHICKS-SENT-ME-HI
  25. 25. BJ Fogg
  26. 26. Po co to wszystko?
  27. 27. Shu-Ha-Ri @kubem
  28. 28. Shu-Ha-Ri Kuba Marchwicki @kubem http://goo.gl/zd1YhU
  29. 29. In case you ask – we are hiring

×