31 lines
1.2 KiB
Markdown
31 lines
1.2 KiB
Markdown
|
---
|
||
|
title: Write programs that do one thing and do it well
|
||
|
date: 2024-03-23
|
||
|
permalink: archive/2024/03/23/write-programs-that-do-one-thing-and-do-it-well
|
||
|
tags:
|
||
|
- software-development
|
||
|
- unix
|
||
|
- linux
|
||
|
cta: ~
|
||
|
snippet: |
|
||
|
Write programs that do one thing and do it well.
|
||
|
---
|
||
|
|
||
|
Over the last few days, I've written about watchers and running commands such as automated tests when files are changed.
|
||
|
|
||
|
Some tools have this built in, whilst others don't.
|
||
|
|
||
|
I've used different tools to do this and recently switched to `entr`.
|
||
|
|
||
|
The previous one wasn't showing me the output from running Drupal automated tests, which `entr` does.
|
||
|
|
||
|
I also like that it follows the UNIX philosophy of doing one thing well and working well with other programs.
|
||
|
|
||
|
For example, to run my automated tests when I change a file, I need to run `find web/modules/custom | entr ./run test`.
|
||
|
|
||
|
`entr` isn't concerned with how to find the list of files to watch - only what to do with them.
|
||
|
|
||
|
To get the list of files, I use the `find` command and provide the files to `entr`.
|
||
|
|
||
|
I also like to do this with my application code. I like to write small modules and libraries with clear boundaries and responsibilities, do their tasks well, and work well with other parts of the application.
|