Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Conjuring Demons
The Power of the True Name
Benjamin Wolf
@ichaos1985
Photo by kellepics on Pixabay
Conjuring Demons - The Power of the True Name
„Reading
good code is like
reading a
good book.“
Benjamin Wolf

Senior Consu...
Conjuring Demons - The Power of the True Name
There are only two hard things in
Computer Science: cache invalidation
and n...
Conjuring Demons - The Power of the True Name
Motivation
Thank you for using <AppName>! We’re always
working hard to make the app faster and better
than ever. Update to the most r...
INNOQ /
Comic by Abstruse Goose on http://abstrusegoose.com
Conjuring Demons - The Power of the True NameINNOQ /
Digression
—
Code Comments
Photo by Luca Bravo on Unsplash
Exception up = new Exception("Something is wrong.");
throw up; // ha ha
Conjuring Demons - The Power of the True Name
Comm...
// When I wrote this, only God and I understood
// what I was doing
// Now, God only knows
Conjuring Demons - The Power of...
// somedev1 - 6/7/2002 Adding temporary tracking of Login
// somedev2 - 5/22/2007 Temporary my ass
Conjuring Demons - The ...
// Magic. Do not touch.
Conjuring Demons - The Power of the True Name
Comment by Jason Sundram on stackoverflow.com
// private instance variable for storing age
public static int age;
Conjuring Demons - The Power of the True Name
Comment ...
try {
...
} finally { // should never happen
...
}
Conjuring Demons - The Power of the True Name
Comment by gedevan on sta...
// it was hard to write
// so it should be hard to read
Conjuring Demons - The Power of the True Name
Comment by Neil Kodn...
// John! If you'll svn remove this once more,
// I'll shut you, for God's sake!
// That piece of code is not “something st...
options.BatchSize = 300; // Madness? THIS IS SPARTA!
Conjuring Demons - The Power of the True Name
Comment by Jumpinjackie...
long long ago; /* in a galaxy far far away */
Conjuring Demons - The Power of the True Name
Comment by Juliano on stackove...
// Dear maintainer:
//
// Once you are done trying to ‘optimise’ this routine,
// and have realised what a terrible mistak...
/*
* You may think you know what the following code does.
* But you don’t. Trust me.
* Fiddle with it, and you’ll spend ma...
Conjuring Demons - The Power of the True NameINNOQ /
Commit Messages
Photo by Nathan Lemon on Unsplash
Source: https://xkcd.com/1296/
• Some bugs fixed
• Fixed bugs
• Some little changes
• Changed a little
• Small fixes
• Fixes XYZ
• F*CK! Had to revert!
C...
Photo by Emily Morter on Unsplash
INNOQ / Conjuring Demons - The Power of the True Name
Style
Photo by Nafinia Putra on Unsplash
INNOQ / Conjuring Demons - The Power of the True Name
Content
INNOQ / Conjuring Demons - The Power of the True Name
Photo by Sindre Aalberg on Unsplash
Metadata
INNOQ / Conjuring Demons - The Power of the True Name
Photo by Jingyi Wang on Unsplash
Conjuring Demons - The Power of the True NameINNOQ /
7 rules for commit messages
Photo by Marvin Ronsdorf on Unsplash
Conjuring Demons - The Power of the True Name
1. 

Separate subject from

body with a blank line
Source: Chris Beams on ch...
Conjuring Demons - The Power of the True Name
2.

Limit the subject line 

to 50 characters
Source: Chris Beams on chris.b...
Conjuring Demons - The Power of the True Name
3. 

Capitalize the subject line
Source: Chris Beams on chris.beams.io
Conjuring Demons - The Power of the True Name
4.

Do not end the subject

line with a period
Source: Chris Beams on chris....
Conjuring Demons - The Power of the True Name
5. 

Use the imperative mood

in the subject line
Source: Chris Beams on chr...
Conjuring Demons - The Power of the True Name
6.

Wrap the body at

72 characters
Source: Chris Beams on chris.beams.io
Conjuring Demons - The Power of the True Name
7. 

Use the body to explain

what and why vs. how
Source: Chris Beams on ch...
Summarize changes in around 50 characters or less
More detailed explanatory text, if necessary. Wrap it to
about 72 charac...
Further paragraphs come after blank lines.
- Bullet points are okay, too
- Typically a hyphen or asterisk is used for the ...
What is the purpose of a commit message?
Conjuring Demons - The Power of the True Name
What is the purpose of a commit message?
NOT stating the obvious
NOT babbling
Conjuring Demons - The Power of the True Name
What is the purpose of a commit message?
NOT stating the obvious
NOT babbling
Summarizing the essential
Explaining the mot...
@gitlost



@git_commit_m
Conjuring Demons - The Power of the True Name
Conjuring Demons - The Power of the True Name
Source: andrewvos.com/2011/02/21/amount-of-profanity-in-git-commit-messages-...
Conjuring Demons - The Power of the True NameINNOQ /
Naming
Photo by Jared Rice on Unsplash
What has
been seen
cannot be
u...
Conjuring Demons - The Power of the True NameINNOQ /
Naming
Photo by Quentin Dr on Unsplash
What has
been seen
cannot be
u...
Conjuring Demons - The Power of the True NameINNOQ /
Naming
Photo by Paul on Unsplash
What has
been seen
cannot be
un-seen
private int a;
private int b;
private int c;
Conjuring Demons - The Power of the True Name
SetUserInterfaceControlState(false);
Conjuring Demons - The Power of the True Name
SetAutoUpdateOnOff(“1”);
Conjuring Demons - The Power of the True Name
// Yap, that is a string! (╯°□° ╯ ┻━┻
ActReqInter4ProcUp(string aHaMesCo)

{ 

...
Conjuring Demons - The Power of the True Name
ActivateRequiredInterfaceForProcessUpdate

(string aHashedMessageContent)

{ 

...
Conjuring Demons - The Power of the Tru...
ReadThisFromFileIfRequiredOrDoNotReadAndChangeOrder
(false);
Conjuring Demons - The Power of the True Name
void SetSimpleIntValue(int aValue)
{
}
Conjuring Demons - The Power of the True Name
// check borders
// calculate two oth...
Conjuring Demons - The Power of the True NameINNOQ /
Amazing examples for
awesome names
Photo by Blake Richard Verdoorn on...
Think.
Conjuring Demons - The Power of the True Name
Think twice!
Conjuring Demons - The Power of the True Name
Write your code.
Conjuring Demons - The Power of the True Name
Think again!
Conjuring Demons - The Power of the True Name
Refactor your code.
Conjuring Demons - The Power of the True Name
Conjuring Demons - The Power of the True Name
Think different!
Use Concrete Names
Conjuring Demons - The Power of the True Name
Conjuring Demons - The Power of the True Name
bool ServerCanStart();
Source: „The Art of Readable Code“
Conjuring Demons - The Power of the True Name
bool CanListenOnPort();
Source: „The Art of Readable Code“
Conjuring Demons - The Power of the True Name
ourRemoteServerApp.exe --run_locally
Source: „The Art of Readable Code“
Conjuring Demons - The Power of the True Name
ourRemoteServerApp.exe --extra_logging
Source: „The Art of Readable Code“
Attach Details
Conjuring Demons - The Power of the True Name
Conjuring Demons - The Power of the True Name
var elapsed = Date.GetTime() - start;
Source: „The Art of Readable Code“
Conjuring Demons - The Power of the True Name
var elapsedMilliSeconds = Date.GetTime() - start;
Source: „The Art of Readab...
Conjuring Demons - The Power of the True Name
void printUserComment(string comment);
Conjuring Demons - The Power of the True Name
void printUserComment(string unescapedComment);
Prevent Ambiguity
Conjuring Demons - The Power of the True Name
Conjuring Demons - The Power of the True Name
Results = Database.AllObjects.Filter(“year <= 2011”);
Source: „The Art of Re...
Conjuring Demons - The Power of the True Name
Results = Database.AllObjects.Select(“year <= 2011”);
Results = Database.All...
Naming Booleans
Conjuring Demons - The Power of the True Name
Conjuring Demons - The Power of the True Name
bool read_password = true;
Source: „The Art of Readable Code“
Conjuring Demons - The Power of the True Name
bool need_password = true;
bool user_is_authenticated = false;
Source: „The ...
Conjuring Demons - The Power of the True Name
bool disable_ssl = true;
Source: „The Art of Readable Code“
Conjuring Demons - The Power of the True Name
bool use_ssl = false;
Source: „The Art of Readable Code“
Match expectations of users
(of your code)
Conjuring Demons - The Power of the True Name
Conjuring Demons - The Power of the True Name
var myVal = myObject.GetValue();
Conjuring Demons - The Power of the True Name
myObject.SetValue(myVal);
Conjuring Demons - The Power of the True Name
Setters are evil
Conjuring Demons - The Power of the True Name
class CookieJar
{
void SetCookies(int aCookieCount) { ... }
...
}
See more: ...
Conjuring Demons - The Power of the True Name
myJar.SetCookies(myJar.GetCookies() - 3);
Conjuring Demons - The Power of the True Name
It’s all about the context...
Conjuring Demons - The Power of the True Name
class CookieJar
{
TakeCookies(int aCookieCount) { ... }
AddNewCookies(int aN...
Conjuring Demons - The Power of the True Name
myJar.TakeCookies(3);
Conjuring Demons - The Power of the True Name
Setters are evil
89
• Many examples and ideas that are valid
in .NET
• Good value
• Covers code style, comments,
naming, testing, error han...
Conjuring Demons
The Power of the True Name
Benjamin Wolf
@ichaos1985
Photo by kellepics on Pixabay
• Cover page, last page: Photo by kellepics on Pixabay, https://pixabay.com/en/fantasy-forest-creepy-woman-bird-2846786/
•...
• Page 44, “Monkey“, Photo by Jared Rice on Unsplash, https://unsplash.com/photos/O6DUoIl6NWA
• Page 45, “Oh my God !“, Ph...
• Page 9, “Throw Up“, Comment by benmatth on stackoverflow.com, https://stackoverflow.com/a/549611, CC BY-SA 3.0
• Page 10...
DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens
DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens
Upcoming SlideShare
Loading in …5
×

of

DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 1 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 2 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 3 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 4 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 5 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 6 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 7 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 8 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 9 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 10 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 11 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 12 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 13 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 14 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 15 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 16 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 17 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 18 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 19 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 20 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 21 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 22 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 23 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 24 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 25 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 26 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 27 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 28 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 29 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 30 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 31 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 32 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 33 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 34 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 35 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 36 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 37 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 38 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 39 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 40 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 41 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 42 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 43 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 44 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 45 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 46 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 47 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 48 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 49 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 50 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 51 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 52 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 53 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 54 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 55 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 56 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 57 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 58 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 59 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 60 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 61 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 62 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 63 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 64 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 65 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 66 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 67 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 68 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 69 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 70 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 71 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 72 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 73 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 74 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 75 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 76 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 77 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 78 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 79 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 80 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 81 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 82 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 83 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 84 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 85 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 86 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 87 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 88 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 89 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 90 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 91 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 92 DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens Slide 93
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens

Download to read offline

Haben Sie schon einmal so etwas “void actReqInter4ProcUp(string aHaMesCo)” oder etwas Ähnliches gesehen? Dabei handelt es sich um einen sogenannten Software-Dämon. Ein anderes Exemplar ist folgende Nachricht eines Commits, der ca. 35 Dateien betraf: “some little changes”.

Die folgenden zwei Fragen muss sich ein Entwickler unter anderem stellen, um eben solche Dämonen nicht zu beschwören:
- Was genau soll ich in meine Commit-Message schreiben?
- Wie benenne ich diese Funktion/dieses Member?

Beide Fragen zielen auf das Gleiche ab: das Benennen von Dingen, die man geschaffen hat. Dieser Vortrag gibt mit vielen zum Teil lustigen aber auch schrecklichen Beispielen aus dem Projekt-Leben auf beide Fragen Antworten. Und praktische Tipps stellen dar, wie Sie in Zukunft selbst Dämonen austreiben können.

Dieser Vortrag richtet sich an unerfahrene sowie auch an erfahrene Entwickler, die sich genau diese Fragen immer wieder stellen und bisher keine zufriedenstellende Antwort gefunden haben.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

DevDay 2018: Benjamin Wolf - Conjuring Demons: Die Macht des wahren Namens

  1. 1. Conjuring Demons The Power of the True Name Benjamin Wolf @ichaos1985 Photo by kellepics on Pixabay
  2. 2. Conjuring Demons - The Power of the True Name „Reading good code is like reading a good book.“ Benjamin Wolf
 Senior Consultant at INNOQ • Trainer • Develops applications in Java / .NET • Loves software quality • Coffee snob
  3. 3. Conjuring Demons - The Power of the True Name There are only two hard things in Computer Science: cache invalidation and naming things. — Phil Karlton Foto © INNOQ
  4. 4. Conjuring Demons - The Power of the True Name Motivation
  5. 5. Thank you for using <AppName>! We’re always working hard to make the app faster and better than ever. Update to the most recent version to get the best experience of <AppName>. Love the app? Rate us! Your feedback helps us to continuously improve <AppName>. Conjuring Demons - The Power of the True Name
  6. 6. INNOQ / Comic by Abstruse Goose on http://abstrusegoose.com
  7. 7. Conjuring Demons - The Power of the True NameINNOQ / Digression — Code Comments Photo by Luca Bravo on Unsplash
  8. 8. Exception up = new Exception("Something is wrong."); throw up; // ha ha Conjuring Demons - The Power of the True Name Comment by benmatth on stackoverflow.com
  9. 9. // When I wrote this, only God and I understood // what I was doing // Now, God only knows Conjuring Demons - The Power of the True Name Comment by johnc on stackoverflow.com
  10. 10. // somedev1 - 6/7/2002 Adding temporary tracking of Login // somedev2 - 5/22/2007 Temporary my ass Conjuring Demons - The Power of the True Name Comment by Rohit on stackoverflow.com
  11. 11. // Magic. Do not touch. Conjuring Demons - The Power of the True Name Comment by Jason Sundram on stackoverflow.com
  12. 12. // private instance variable for storing age public static int age; Conjuring Demons - The Power of the True Name Comment by Mia Clarke on stackoverflow.com
  13. 13. try { ... } finally { // should never happen ... } Conjuring Demons - The Power of the True Name Comment by gedevan on stackoverflow.com
  14. 14. // it was hard to write // so it should be hard to read Conjuring Demons - The Power of the True Name Comment by Neil Kodner on stackoverflow.com
  15. 15. // John! If you'll svn remove this once more, // I'll shut you, for God's sake! // That piece of code is not “something strange”! // That is THE AUTH VALIDATION. Conjuring Demons - The Power of the True Name Comment by matiouchkine on stackoverflow.com
  16. 16. options.BatchSize = 300; // Madness? THIS IS SPARTA! Conjuring Demons - The Power of the True Name Comment by Jumpinjackie on stackoverflow.com
  17. 17. long long ago; /* in a galaxy far far away */ Conjuring Demons - The Power of the True Name Comment by Juliano on stackoverflow.com
  18. 18. // Dear maintainer: // // Once you are done trying to ‘optimise’ this routine, // and have realised what a terrible mistake that was, // please increment the following counter as a warning // to the next guy: // // total_hours_wasted_here = 42 // Conjuring Demons - The Power of the True Name Comment by Jens Roland on stackoverflow.com
  19. 19. /* * You may think you know what the following code does. * But you don’t. Trust me. * Fiddle with it, and you’ll spend many a sleepless * night cursing the moment you thought you’d be clever * enough to "optimize" the code below. * Now close this file and go play with something else. */ Conjuring Demons - The Power of the True Name Comment by PoppaVein on stackoverflow.com
  20. 20. Conjuring Demons - The Power of the True NameINNOQ / Commit Messages Photo by Nathan Lemon on Unsplash
  21. 21. Source: https://xkcd.com/1296/
  22. 22. • Some bugs fixed • Fixed bugs • Some little changes • Changed a little • Small fixes • Fixes XYZ • F*CK! Had to revert! Conjuring Demons - The Power of the True Name Common Commit Messages
  23. 23. Photo by Emily Morter on Unsplash INNOQ / Conjuring Demons - The Power of the True Name
  24. 24. Style Photo by Nafinia Putra on Unsplash INNOQ / Conjuring Demons - The Power of the True Name
  25. 25. Content INNOQ / Conjuring Demons - The Power of the True Name Photo by Sindre Aalberg on Unsplash
  26. 26. Metadata INNOQ / Conjuring Demons - The Power of the True Name Photo by Jingyi Wang on Unsplash
  27. 27. Conjuring Demons - The Power of the True NameINNOQ / 7 rules for commit messages Photo by Marvin Ronsdorf on Unsplash
  28. 28. Conjuring Demons - The Power of the True Name 1. 
 Separate subject from
 body with a blank line Source: Chris Beams on chris.beams.io
  29. 29. Conjuring Demons - The Power of the True Name 2.
 Limit the subject line 
 to 50 characters Source: Chris Beams on chris.beams.io
  30. 30. Conjuring Demons - The Power of the True Name 3. 
 Capitalize the subject line Source: Chris Beams on chris.beams.io
  31. 31. Conjuring Demons - The Power of the True Name 4.
 Do not end the subject
 line with a period Source: Chris Beams on chris.beams.io
  32. 32. Conjuring Demons - The Power of the True Name 5. 
 Use the imperative mood
 in the subject line Source: Chris Beams on chris.beams.io
  33. 33. Conjuring Demons - The Power of the True Name 6.
 Wrap the body at
 72 characters Source: Chris Beams on chris.beams.io
  34. 34. Conjuring Demons - The Power of the True Name 7. 
 Use the body to explain
 what and why vs. how Source: Chris Beams on chris.beams.io
  35. 35. Summarize changes in around 50 characters or less More detailed explanatory text, if necessary. Wrap it to about 72 characters or so. In some contexts, the first line is treated as the subject of the commit and the rest of the text as the body. The blank line separating the summary from the body is critical (unless you omit the body entirely); various tools like ‘log’, ‘shortlog’ and ‘rebase’ can get confused if you run the two together. Explain the problem that this commit is solving. Focus on why you are making this change as opposed to how (the code explains that). Are there side effects or other unintuitive consequences of this change? Here's the place to explain them. Source: Chris Beams on chris.beams.io
  36. 36. Further paragraphs come after blank lines. - Bullet points are okay, too - Typically a hyphen or asterisk is used for the bullet, preceded by a single space, with blank lines in between, but conventions vary here If you use an issue tracker, put references to them at the bottom, like this: Resolves: #123 See also: #456, #789 Source: Chris Beams on chris.beams.io
  37. 37. What is the purpose of a commit message? Conjuring Demons - The Power of the True Name
  38. 38. What is the purpose of a commit message? NOT stating the obvious NOT babbling Conjuring Demons - The Power of the True Name
  39. 39. What is the purpose of a commit message? NOT stating the obvious NOT babbling Summarizing the essential Explaining the motive in detail Conjuring Demons - The Power of the True Name
  40. 40. @gitlost
 
 @git_commit_m Conjuring Demons - The Power of the True Name
  41. 41. Conjuring Demons - The Power of the True Name Source: andrewvos.com/2011/02/21/amount-of-profanity-in-git-commit-messages-per-programming-language
  42. 42. Conjuring Demons - The Power of the True NameINNOQ / Naming Photo by Jared Rice on Unsplash What has been seen cannot be un-seen
  43. 43. Conjuring Demons - The Power of the True NameINNOQ / Naming Photo by Quentin Dr on Unsplash What has been seen cannot be un-seen
  44. 44. Conjuring Demons - The Power of the True NameINNOQ / Naming Photo by Paul on Unsplash What has been seen cannot be un-seen
  45. 45. private int a; private int b; private int c; Conjuring Demons - The Power of the True Name
  46. 46. SetUserInterfaceControlState(false); Conjuring Demons - The Power of the True Name
  47. 47. SetAutoUpdateOnOff(“1”); Conjuring Demons - The Power of the True Name // Yap, that is a string! (╯°□° ╯ ┻━┻
  48. 48. ActReqInter4ProcUp(string aHaMesCo)
 { 
 ... Conjuring Demons - The Power of the True Name
  49. 49. ActivateRequiredInterfaceForProcessUpdate
 (string aHashedMessageContent)
 { 
 ... Conjuring Demons - The Power of the True Name
  50. 50. ReadThisFromFileIfRequiredOrDoNotReadAndChangeOrder (false); Conjuring Demons - The Power of the True Name
  51. 51. void SetSimpleIntValue(int aValue) { } Conjuring Demons - The Power of the True Name // check borders // calculate two other values with rocket science math // Trigger UI Update // request information from server _myMember = aValue;
  52. 52. Conjuring Demons - The Power of the True NameINNOQ / Amazing examples for awesome names Photo by Blake Richard Verdoorn on Unsplash
  53. 53. Think. Conjuring Demons - The Power of the True Name
  54. 54. Think twice! Conjuring Demons - The Power of the True Name
  55. 55. Write your code. Conjuring Demons - The Power of the True Name
  56. 56. Think again! Conjuring Demons - The Power of the True Name
  57. 57. Refactor your code. Conjuring Demons - The Power of the True Name
  58. 58. Conjuring Demons - The Power of the True Name Think different!
  59. 59. Use Concrete Names Conjuring Demons - The Power of the True Name
  60. 60. Conjuring Demons - The Power of the True Name bool ServerCanStart(); Source: „The Art of Readable Code“
  61. 61. Conjuring Demons - The Power of the True Name bool CanListenOnPort(); Source: „The Art of Readable Code“
  62. 62. Conjuring Demons - The Power of the True Name ourRemoteServerApp.exe --run_locally Source: „The Art of Readable Code“
  63. 63. Conjuring Demons - The Power of the True Name ourRemoteServerApp.exe --extra_logging Source: „The Art of Readable Code“
  64. 64. Attach Details Conjuring Demons - The Power of the True Name
  65. 65. Conjuring Demons - The Power of the True Name var elapsed = Date.GetTime() - start; Source: „The Art of Readable Code“
  66. 66. Conjuring Demons - The Power of the True Name var elapsedMilliSeconds = Date.GetTime() - start; Source: „The Art of Readable Code“
  67. 67. Conjuring Demons - The Power of the True Name void printUserComment(string comment);
  68. 68. Conjuring Demons - The Power of the True Name void printUserComment(string unescapedComment);
  69. 69. Prevent Ambiguity Conjuring Demons - The Power of the True Name
  70. 70. Conjuring Demons - The Power of the True Name Results = Database.AllObjects.Filter(“year <= 2011”); Source: „The Art of Readable Code“
  71. 71. Conjuring Demons - The Power of the True Name Results = Database.AllObjects.Select(“year <= 2011”); Results = Database.AllObjects.Exclude(“year <= 2011”); Source: „The Art of Readable Code“
  72. 72. Naming Booleans Conjuring Demons - The Power of the True Name
  73. 73. Conjuring Demons - The Power of the True Name bool read_password = true; Source: „The Art of Readable Code“
  74. 74. Conjuring Demons - The Power of the True Name bool need_password = true; bool user_is_authenticated = false; Source: „The Art of Readable Code“
  75. 75. Conjuring Demons - The Power of the True Name bool disable_ssl = true; Source: „The Art of Readable Code“
  76. 76. Conjuring Demons - The Power of the True Name bool use_ssl = false; Source: „The Art of Readable Code“
  77. 77. Match expectations of users (of your code) Conjuring Demons - The Power of the True Name
  78. 78. Conjuring Demons - The Power of the True Name var myVal = myObject.GetValue();
  79. 79. Conjuring Demons - The Power of the True Name myObject.SetValue(myVal);
  80. 80. Conjuring Demons - The Power of the True Name Setters are evil
  81. 81. Conjuring Demons - The Power of the True Name class CookieJar { void SetCookies(int aCookieCount) { ... } ... } See more: https://github.com/joyclark/cookie-jar
  82. 82. Conjuring Demons - The Power of the True Name myJar.SetCookies(myJar.GetCookies() - 3);
  83. 83. Conjuring Demons - The Power of the True Name It’s all about the context...
  84. 84. Conjuring Demons - The Power of the True Name class CookieJar { TakeCookies(int aCookieCount) { ... } AddNewCookies(int aNewCookies) { ... } ... }
  85. 85. Conjuring Demons - The Power of the True Name myJar.TakeCookies(3);
  86. 86. Conjuring Demons - The Power of the True Name Setters are evil
  87. 87. 89 • Many examples and ideas that are valid in .NET • Good value • Covers code style, comments, naming, testing, error handling, object- oriented and functional design best practices.  • Overall about beautiful code • Unique before/after approach with bad and clean code side-by-side. Conjuring Demons - The Power of the True Name https://pragprog.com/book/javacomp/java-by-comparison Promotion on our own account
  88. 88. Conjuring Demons The Power of the True Name Benjamin Wolf @ichaos1985 Photo by kellepics on Pixabay
  89. 89. • Cover page, last page: Photo by kellepics on Pixabay, https://pixabay.com/en/fantasy-forest-creepy-woman-bird-2846786/ • Page 7, „O.P.C“, comic by Abstruse Goose on http://abstrusegoose.com/432, CC BY-NC 3.0 US • Page 8, “Code on a laptop screen“, Photo by Luca Bravo on Unsplash, https://unsplash.com/photos/XJXWbfSo2f0 • Page 21, “Best Made Cup“, Photo by Nathan Lemon on Unsplash, https://unsplash.com/photos/FBiKcUw_sQw • Page 22, “Git Commit“, https://xkcd.com/1296/ / https://imgs.xkcd.com/comics/git_commit_2x.png, CC BY-SA 2.5 • Page 24, “Where is the Love“, Photo by Emily Morter on Unsplash, https://unsplash.com/photos/8xAA0f9yQnE • Page 25, “Latte art and laptop“, Photo by Nafinia Putra on Unsplash, https://unsplash.com/photos/k7BdNN6TwFo • Page 26, “Round storage“, Photo by Sindre Aalberg on Unsplash, https://unsplash.com/photos/mEr7U5yfYt8 • Page 27, “Network everything“, Photo by Jingyi Wang on Unsplash, https://unsplash.com/photos/avKPLHgASBM • Page 28, “run track from the air“, Photo by Marvin Ronsdorf on Unsplash, https://unsplash.com/photos/sX9_SHIqH4w • Page 43, “Github profanity“, andrewvos.com/2011/02/21/amount-of-profanity-in-git-commit-messages-per-programming- language Conjuring Demons - The Power of the True Name Resources (images)
  90. 90. • Page 44, “Monkey“, Photo by Jared Rice on Unsplash, https://unsplash.com/photos/O6DUoIl6NWA • Page 45, “Oh my God !“, Photo by Quentin Dr on Unsplash, https://unsplash.com/photos/mUtlJ4yumzg • Page 46, “Green Cat Eyes“, Photo by Paul on Unsplash, https://unsplash.com/photos/OvLBv6F6DGE • Page 54, “Latte in a coffee machine“, Photo by Blake Richard Verdoorn on Unsplash, https://unsplash.com/photos/gM- RfQsZK98 • Page 89, “Java by Comparison“, https://pragprog.com/book/javacomp/java-by-comparison Conjuring Demons - The Power of the True Name Resources (images)
  91. 91. • Page 9, “Throw Up“, Comment by benmatth on stackoverflow.com, https://stackoverflow.com/a/549611, CC BY-SA 3.0 • Page 10, “God Knows“, Comment by johnc on stackoverflow.com, https://stackoverflow.com/a/316233, CC BY-SA 3.0 • Page 11, “Temporary“, Comment by Rohit on stackoverflow.com, https://stackoverflow.com/a/778275, CC BY-SA 3.0 • Page 12, “Magic“, Comment by Jason Sundram on stackoverflow.com, https://stackoverflow.com/a/185106, CC BY-SA 3.0 • Page 13, “Public“, Comment by Mia Clarke on stackoverflow.com, https://stackoverflow.com/a/694644, CC BY-SA 3.0 • Page 14, “Finally“, Comment by gedevan on stackoverflow.com, https://stackoverflow.com/a/192823, CC BY-SA 3.0 • Page 15, “Hard“, Comment by Neil Kodner on stackoverflow.com, https://stackoverflow.com/a/789811, CC BY-SA 3.0 • Page 16, “Auth Validation“, Comment by matiouchkine on stackoverflow.com, https://stackoverflow.com/a/618976, CC BY-SA 3.0 • Page 17, “Sparta“, Comment by Jumpinjackie on stackoverflow.com, https://stackoverflow.com/a/331424, CC BY-SA 3.0 • Page 18, “Galaxy“, Comment by Juliano on stackoverflow.com, https://stackoverflow.com/a/615845, CC BY-SA 3.0 • Page 19, “Hours wasted“, Comment by Jens Roland on stackoverflow.com, https://stackoverflow.com/a/482129, CC BY-SA 3.0 • Page 20, “You do not“, Comment by PoppaVein on stackoverflow.com, https://stackoverflow.com/a/189859, CC BY-SA 3.0 • Pages 29-37: „How to write a commit message“, Chris Beams on https://chris.beams.io/posts/git-commit/, CC BY-SA 4.0 • Pages 62-79: Boswell, Dustin; Foucher, Trevor (2011). The Art of Readable Code. O'Reilly Media. Conjuring Demons - The Power of the True Name Resources (examples)

Haben Sie schon einmal so etwas “void actReqInter4ProcUp(string aHaMesCo)” oder etwas Ähnliches gesehen? Dabei handelt es sich um einen sogenannten Software-Dämon. Ein anderes Exemplar ist folgende Nachricht eines Commits, der ca. 35 Dateien betraf: “some little changes”. Die folgenden zwei Fragen muss sich ein Entwickler unter anderem stellen, um eben solche Dämonen nicht zu beschwören: - Was genau soll ich in meine Commit-Message schreiben? - Wie benenne ich diese Funktion/dieses Member? Beide Fragen zielen auf das Gleiche ab: das Benennen von Dingen, die man geschaffen hat. Dieser Vortrag gibt mit vielen zum Teil lustigen aber auch schrecklichen Beispielen aus dem Projekt-Leben auf beide Fragen Antworten. Und praktische Tipps stellen dar, wie Sie in Zukunft selbst Dämonen austreiben können. Dieser Vortrag richtet sich an unerfahrene sowie auch an erfahrene Entwickler, die sich genau diese Fragen immer wieder stellen und bisher keine zufriedenstellende Antwort gefunden haben.

Views

Total views

679

On Slideshare

0

From embeds

0

Number of embeds

401

Actions

Downloads

0

Shares

0

Comments

0

Likes

0

×