the zero-one-infinity rule

expressão

programação

Permita nenhum, um, ou qualquer número de algo; todo outro limite é arbitrário.

Atribuída ao pioneiro holandês Willem van der Poel, a regra diz que tetos arbitrários (três tentativas de login, dezesseis partições, 255 caracteres) codificam um palpite sobre o futuro que o futuro vai desmentir. Zero e um são escolhas estruturais; tudo acima de um só deveria ser limitado pelos recursos. Metade das verrugas de compatibilidade dos sistemas legados são violações dela, fossilizadas.

A regra zero-um-infinito diz que os únicos números razoáveis num projeto são zero, um, e um número qualquer. A observação de Willem van der Poel é que todo outro limite é arbitrário, e limites arbitrários são descobertos pelos usuários no pior momento.

A evidência histórica é extensa e cara. Dois dígitos para o ano, oito caracteres para um nome de arquivo, trinta e dois bits para um carimbo de tempo, um máximo fixo de interfaces por equipamento: cada um era razoável quando escolhido, cada um virou projeto de migração, e vários viraram eventos de indústria inteira. O limite é sempre escolhido por alguém que não consegue imaginar o caso que o excede, que é exatamente o caso que chega.

O contrapeso honesto é que ilimitado não sai de graça. Um limite infinito significa que um atacante pode fornecer infinito, então exaustão de recursos vira o modo de falha, e sistemas reais precisam de limites de memória, tamanho de requisição e profundidade de recursão. A conciliação é que limites devem existir para proteger recursos, ser configuráveis em vez de fixados no código, e ser escolhidos uma ordem de grandeza além de qualquer uso legítimo plausível, e não logo acima do atual.

Todos os verbetes do glossário