Skip to content

organized modules

Jan 30, 2025·2 min read

not that important, or maybe it is?

It’s really difficult to parse files when you only rely on your IDE for hopping around. I do blame myself, my IDE setup is dismal. However the point I’m trying to make here is that you should make the purpose of the file/module as apparent as possible from top-to-bottom. You will spend more time reading code than writing it, and this is how people read. I don’t want to pull your branch down and get intimate with what you’re doing.

Take the following example, in python because this is what I live and breathe these days.

from pathlib import Path

def is_audio_file(filename: str) -> bool:
    return filename.endswith(('.mp3', '.wav', '.flac'))

def process_audio_file(filename: str) -> None:
    print(f"Processing audio file: {filename}")

class DirectoryParser:
    def __init__(self):
        pass

    def parse(self, directory: Path) -> None:
        files = directory.iterdir()
        for file in files:
            if file.is_file():
                if is_audio_file(file.name):
                    process_audio_file(file.name)
                elif is_video_file(file.name):
                    process_video_file(file.name)
                elif is_text_file(file.name):
                    process_text_file(file.name)
                else:
                    print(f"Unknown file type: {file.name}")

def is_video_file(filename: str) -> bool:
    return filename.endswith(('.mp4', '.mkv', '.mov'))

def is_text_file(filename: str) -> bool:
    return filename.endswith(('.txt', '.md', '.csv'))

def process_video_file(filename: str) -> None:
    print(f"Processing video file: {filename}")

def process_text_file(filename: str) -> None:
    print(f"Processing text file: {filename}")

It’s confusing. If you don’t think so, I genuinely envy you. Look at the following instead:

from pathlib import Path

class DirectoryParser:
    """Parses a directory and processes files based on their type."""
    
    def parse(self, directory: Path) -> None:
        """Scans the directory and processes files based on type."""
        for file in directory.iterdir():
            if file.is_file():
                if is_audio_file(file.name):
                    process_audio_file(file.name)
                elif is_video_file(file.name):
                    process_video_file(file.name)
                elif is_text_file(file.name):
                    process_text_file(file.name)
                else:
                    print(f"Unknown file type: {file.name}")

def is_audio_file(filename: str) -> bool:
    return filename.endswith(('.mp3', '.wav', '.flac'))

def is_video_file(filename: str) -> bool:
    return filename.endswith(('.mp4', '.mkv', '.mov'))

def is_text_file(filename: str) -> bool:
    return filename.endswith(('.txt', '.md', '.csv'))

def process_audio_file(filename: str) -> None:
    print(f"Processing audio file: {filename}")

def process_video_file(filename: str) -> None:
    print(f"Processing video file: {filename}")

def process_text_file(filename: str) -> None:
    print(f"Processing text file: {filename}")

I acknowledge this might not mean much entering the era of generated artifacts, but I find the latter so much easier to read. Thanks for coming to my opinionated ted talk.