41 votes

Avez-vous déjà restreint vous-même à l'aide d'un sous-ensemble des fonctionnalités du langage?

Avez-vous déjà restreint vous-même à l'aide d'un sous-ensemble des fonctionnalités du langage, et plus important encore, pourquoi?

Je suis curieux de savoir qui choisir de n'utiliser que certains traits de langage et d'éviter les autres afin de gagner gros dans des domaines tels que, mais non limité à, l'utilisation de la mémoire, la vitesse d'exécution ou tout simplement la lisibilité et la maintenabilité. Et, ce faisant, fait-il les résultats escomptés ou avait-il peut-être tout simplement gêner les autres aspects de la production de logiciel. Existe-il des mises en garde ou sauvages succès des histoires, il vaut la peine de partager à ce sujet?

28voto

Brian Ramsay Points 4332

Douglas Crockford du livre Javascript: Les Bonnes Parties est un excellent exemple de cela. Il énumère les 'fonctions' en javascript qui doit être évitée, et offre des alternatives d'utiliser les "bons côtés" de la langue.

Quelques-uns des mauvaises parties sont:

  • eval
    plus lent, plus difficile à lire, dangereusement précaire

  • ==
    confus et ambigu différemment tapé opérandes

  • avec
    des résultats imprévisibles

12voto

Adam Bellaire Points 42797

Oui, tout le temps.

Parce que j'utilise Perl, et la plupart des gens sont d'accord que beaucoup de nos langues fonctionnalités sont mieux de ne pas utilisé, sauf si vous avez vraiment besoin de vous et vous savez ce que vous faites. Par exemple, les références symboliques sont pris en charge, mais vous ne devriez pas les utiliser. goto existe, mais vous ne devriez pas l'utiliser. Vous pouvez ré-utiliser les étiquettes des variables de différents types, par exemple, $var, @var, %var, mais vous ne devriez pas le faire, soit. Vous ne pouvez pas use strict d'avoir des variables non déclarées devenu symbole des entrées de la table automatiquement, mais vous avez vraiment ne devrait pas le faire.

La raison principale est que beaucoup de ces caractéristiques ont des conséquences à la fois évidente et ésotérique qui peut introduire un subtil et difficile à déboguer les erreurs dans votre programme si utilisé sans précaution. Perl fait beaucoup de choses possibles et il peut être intéressant pour l'utilisation de certaines langues inhabituelles fonctionnalités pour gagner quelques minutes de codage. Il y a bien sûr des fois quand ésotérique fonctions sont à portée de main, et c'est génial qu'ils sont là pour vous de prendre avantage de Perl, plutôt que d'être absent tout à fait. Mais il faut de l'expérience pour savoir quand les économies qui en vaut la peine, parce que la grande majorité du temps, vous êtes en création de maintenance cauchemar pour vous et les autres en bas de la route.

J'aime à le répéter TMTOWTDI, BMOTWAW; Il n'y a plus d'une façon de le faire, mais la plupart de ces moyens sont mauvais.

Il est parfaitement possible de créer de grands lettrés, facile à maintenir les applications Perl. Et une bonne partie de cela est la restriction à un sous-ensemble des fonctionnalités du langage.

11voto

Mehrdad Afshari Points 204872

Un cas est lorsque vous êtes à l'écriture d'un compilateur d'un nouveau langage en lui-même. Vous pouvez:

  • Utiliser une autre langue pour écrire un simple compilateur pour un sous-ensemble de la nouvelle langue.
  • Utilisez ce sous-ensemble de la langue pour écrire le compilateur de la version complète de lui-même.

8voto

Lucas Oman Points 9027

Bien que PHP était à l'origine un modèle de langue, elle est devenue un acteur à part entière OO langage de programmation. Pour cette raison, certains disent qu'il est plus approprié d'utiliser comme modèle de langue.

Vraiment, si, c'est juste une question de discipline. Lors de la création de HTML/PHP modèles, je me limiter à la simple sous-ensemble possible: des conditions, des boucles et aucune logique métier que ce soit. Aucune instanciation d'objet. Aucune des définitions de fonction. Une logique plus complexe est séparé dans d'autres fichiers.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X