Skip to content

Instantly share code, notes, and snippets.

View geraldcroes's full-sized avatar

Gérald Croës geraldcroes

  • TraefikLabs
  • France, Lyon
View GitHub Profile
@geraldcroes
geraldcroes / foo.php
Last active February 21, 2018 15:21
Meaningful variable name
<?php
if ($activityReport[$employeeId][$month] > $salesGoal) {
//some code here
}
@geraldcroes
geraldcroes / foo.php
Created February 21, 2018 15:19
Meaningless variable names
<?php
if ($data[$i][$j] > $x) {
//some code here
}
@geraldcroes
geraldcroes / client.kt
Created December 9, 2017 17:04
String extension
"filename.json".createFileParser()
@geraldcroes
geraldcroes / extension.kt
Created December 9, 2017 17:03
String extension
fun String.createFileParser() =
when (this.substringAfterLast('.')) {
"xml" -> XmlFileParser()
"json" -> JsonFileParser()
else -> throw Exception("I don't know how to deal with $this.")
}
@geraldcroes
geraldcroes / extension.kt
Created December 9, 2017 17:01
infix extension
infix fun FileParser.Companion.fromFile(filename: String) =
this.createFromFileName(filename)
@geraldcroes
geraldcroes / client.kt
Created December 9, 2017 17:01
infix extension
val parser = FileParser fromFile "filename.json"
@geraldcroes
geraldcroes / extension.kt
Created December 9, 2017 16:59
Extending the companion object in the interface
fun FileParser.Companion.fromFile(filename: String) =
this.createFromFileName(filename)
@geraldcroes
geraldcroes / client.kt
Created December 9, 2017 16:58
Calling companion object in the interface
FileParser.createFromFile("filename.json")
@geraldcroes
geraldcroes / FileParser.kt
Created December 9, 2017 16:56
Embedded companion object in an interface
interface FileParser {
companion object {
fun createFromFileName(fileName: String) =
when (fileName.substringAfterLast('.')) {
"xml" -> XmlFileParser()
"json" -> JsonFileParser()
else -> throw Exception("I don't know how to deal with $fileName.")
}
}
}
@geraldcroes
geraldcroes / client.kt
Created December 9, 2017 16:55
Client of the object factory
//Works…
ObjectFileParserFactory.createFromFileName("filename.foo")
//...and this still works
val fileParser = ObjectFileParserFactory
fileParser.createFromFileName("filename.json")