Non esiste una verità generalmente accettata su questi trade off perché sarebbe come ridurre l'intera arte del software in un meme. Il software è una cosa vivente e in crescita che ha questi compromessi fatti costantemente durante lo sviluppo.
Ci sono casi in cui la leggibilità e l'estensibilità vanno di pari passo. Ad esempio, scomporre un piccolo pezzetto di codice in una funzione di subroutine. Nascondere i cicli nidificati e se le istruzioni come subroutine nominate sono leggibili. Rende anche il codice flessibile per il riutilizzo.
Nell'altro estremo, il codice progettato per essere iperestensibile può essere visto come eccessivamente complesso a causa dei numerosi livelli di astrazione necessari per raggiungere quel livello di estensibilità. Un compilatore di linguaggio di programmazione è un buon esempio di questo. Dubito che ci sia un codice compilatore che sia notoriamente leggibile.