f.strazzullo@extrategy.net
@TheStrazz86
https://github.com/francesco-strazzullo
https://medium.com/@TheStrazz86
https://slides.com/francescostrazzullo
Code with us - The italian blog about software development where everybody can write!
Our highest priority is to satisfy the customer
Welcome changing requirements, even late in
development
Welcome changing requirements, even late in
development
Welcome changing requirements, even late in
development
By Webysther Nunes (Own work) [CC BY-SA 4.0 ], via Wikimedia Commons
Martin Fowler
duplication is far cheaper than the wrong abstraction
Sandi Metz
export default class Logger {
log(param){
console.log(param);
}
}
@Component({
selector: 'my-component',
template: require('./component.html')
})
export default class MyComponent {
constructor(private logger: Logger){}
onButtonClick(param) {
this.logger.log(param);
}
}
@Component({
selector: 'my-component',
template: require('./component.html')
})
export default class MyComponent {
constructor(private eventBus: EventBus){}
onButtonClick(param) {
this.eventBus.dispatch('LOG_SOMETHING',param);
}
}
@Injectable
export default class Logger{
constructor(private eventBus: EventBus){
this.eventBus.on('LOG_SOMETHING',(value) => {
console.log(value);
});
}
}
export default class Logger {
log(param){
console.log(param);
};
}
@Component({
selector: 'my-component',
template: require('./component.html')
})
export default class MyComponent {
constructor(private logger: Logger){}
onButtonClick(param) {
this.logger.log(param);
}
}
export default {
log(param){
console.log(param);
};
}
import logger from './logger';
@Component({
selector: 'my-component',
template: require('./component.html')
})
export default class MyComponent {
constructor(){}
onButtonClick(param) {
logger.log(param);
}
}
Martin Fowler
Sacrificial Architecture, sometimes it’s the fastest way to learn things