Discussion about this post

User's avatar
Emmanuel Valverde Ramos's avatar

That's a really cool article; I felt like the principle of separation of concerns was missing.

Bad example:

```js

const numbers = process.argv.slice(2).map(Number);

const total = numbers.reduce((accumulator, value) => accumulator + value, 0);

console.log(total);

```

Separation of concerns

```js

function readCommandLineArguments(argv) {

const argumentValues = argv.slice(2);

return argumentValues;

}

function parseNumbers(stringValues) {

return stringValues.map((stringValue) => Number(stringValue));

}

function sumNumbers(numbers) {

const startingSum = 0;

return numbers.reduce((accumulator, value) => accumulator + value, startingSum);

}

function writeOutput(text) {

console.log(text);

}

const argumentValues = readCommandLineArguments(process.argv);

const numbers = parseNumbers(argumentValues);

const total = sumNumbers(numbers);

writeOutput(String(total));

```

No posts

Ready for more?