Como você define uma API boa ou ruim? [fechadas]

Fundo:

Estou fazendo uma aula na minha universidade chamada "Restrições de Software". Nas primeiras palestras, aprendemos a criar boas APIs.

Um bom exemplo de uma função API muito ruim é o soquetepublic static void Select(IList checkRead, IList checkWrite, IList checkError, int microseconds); em c #. A função recebe 3 listas de soquetes e os destrói, fazendo com que o usuário clone todos os soquetes antes de alimentá-los noSelect(). Ele também tem um tempo limite (em microssegundos), que é um int, que define o tempo máximo que o servidor pode esperar por um soquete. Os limites são de +/- 35 minutos (porque é um int).

Questões:Como você define uma API como 'ruim'?Como você define uma API como 'boa'?Pontos a considerar:Nomes de funções difíceis de lembrar.Parâmetros de função difíceis de entender.Documentação ruim.Tudo está tão interconectado que, se você precisar alterar 1 linha de código, precisará alterar centenas de linhas em outros lugares.Funções que destroem seus argumentos.Escalabilidade ruim devido à complexidade "oculta".É necessário que o usuário / dev construa wrappers em torno da API para que ela possa ser usada.

questionAnswers(14)

yourAnswerToTheQuestion