f.strazzullo@extrategy.net
@TheStrazz86
https://github.com/francesco-strazzullo
https://medium.com/@TheStrazz86
https://slides.com/francescostrazzullo
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
app.factory('getUsers',['$http',function($http){
return $http.get('api/v1/users');
});
app.controller('home',[
'$scope',
'getUsers',
function(
$scope,
getUsers){
getUsers().then(function(response){
$scope.users = response.data;
});
}]);
export default () => {
return fetch('api/v1/users').then(function (response) {
return response.json();
});
};
import getUsers from './getUsers';
app.controller('home',[
'$scope',
function(
$scope){
getUsers().then(function(users){
$scope.users = users;
});
}]);
duplication is far cheaper than the wrong abstraction
Sandi Metz
export default (param) => {
console.log(param);
};
import logger from './logger';
class DummyButton extends React.Component {
render() {
return (
<div onClick={() => {logger('This is a Value!'}}>
Click Me Bro!
</div>
);
}
}
import EventBus from 'EventBus';
class DummyButton extends React.Component {
onButtonClick() {
EventBus.dispatch('SOMETHING_HAPPENED','This is a Value!');
}
render() {
return (
<div onClick={() => {onButtonClick()}}>
Click Me Bro!
</div>
);
}
}
import EventBus from 'EventBus';
export default {
init:{
EventBus.on('SOMETHING_HAPPENED',(param) => {
console.log(param);
});
}
};
/ˈkʌnᵻvɪn/
By Snowded (Own work) [CC BY-SA 4.0 ], via Wikimedia Commons
Martin Fowler
Sacrificial Architecture, sometimes it’s the fastest way to learn things