When code evolves
We start out with a tiny function that doesn't do that much (pseudo code):
function download_from_aws (from, to) {
do_something();
result = aws_client.download(from);
parsed_result = parse(result);
filesystem.write_to_disk(parsed_result, to);
}
So azure enters the room.
Time to DRY?
function download_from_cloud (from, to, provider) {
do_something();
switch provider:
case PROVIDER.AWS: result = aws_client.download(from);
case PROVIDER.AZURE: result = azure_client.download(from);
parsed_result = parse(result);
filesystem.write_to_disk(parsed_result, to);
}
- Where should this live?
- What happens in case of some conditional stuff, e.g. just
do_something()
for onlyaws
? - Do we always either end up with a big god-like switch-festival or abstraction hell?
I don't know.