Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.lang.java > #1604

Re: Aide pour une stratégie de programmation.

From Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid>
Newsgroups fr.comp.lang.java
Subject Re: Aide pour une stratégie de programmation.
Date 2017-11-15 09:31 +0100
Organization Aioe.org NNTP Server
Message-ID <ougu1h$1fli$1@gioia.aioe.org> (permalink)
References (4 earlier) <5a06ff9f$0$3443$426a34cc@news.free.fr> <20171111183357.7277d116@free.fr> <5a0a6560$0$3841$426a74cc@news.free.fr> <20171114122759.223fae94@free.fr> <5a0bb923$0$11758$426a74cc@news.free.fr>

Show all headers | View raw


Le 15/11/2017 à 04:48, bloiiing a écrit :
> Je te comprends. Mais je compte stocker mes données dans des JTextPane
> ( du moins pour le texte principal ). Et j'ai envie de garder
> l'interface avec une JTabbedPane qui contiendra tous les JTextPane en
> cours d'édition.

Il n'est pas bon de mélanger données et composants graphiques. Que se 
passera-t-il le jour où tu voudra faire passer ton appli sous Android 
qui n'a pas ces JMachins ? Sans compter que tu peux être limité en 
nombre de composants graphiques à disposition (penser à swt et les 
handles sous windows.)

Avant de programmer quoi que ce soit, je te recommande d'étudier le 
design-pattern MVC: Modèle (les données), Vue (ce qui est affiché à 
l'écrann: les JMachin), et Contrôleur (la partie qui fait le lien entre 
le modèle et la vue.) Maitriser le MVC est une base pour quiconque veut 
faire des outils un peu gros avec une interface graphique. C'est une 
façon de concevoir son programme qui est indépendant du langage. Ca 
s'applique en java, en js, en C++ ou en tout ce que tu veux.

https://fr.wikipedia.org/wiki/Mod%C3%A8le-vue-contr%C3%B4leur
https://openclassrooms.com/courses/apprendre-asp-net-mvc/le-pattern-mvc
(c'est peut-être pas le meilleur cours... à toi de chercher sur internet 
mieux si tu veux)

Autre remarque: dans ses déclarations de variables, toujours privilégier 
l'interface la plus généraliste dont on a besoin, pas l'implémentation. 
Si on veut manipuler des listes d'objets on n'écrit pas:
	ArrayList<Truc> list = new ArrayList<>();
mais
	List<Truc> list = new ArrayList<>();
var est déclaré comme une List, pas comme un ArrayList. On aura accès 
qu'aux méthodes des listes ce qui est juste ce dont on a besoin. Ca 
sépare ce qu'on veut (une liste), de son implémentation (une ArrayList, 
un Vector ou que sais-je.) On utilise les fonctions d'une liste, mais on 
se fiche de savoir comment c'est réalisé (avec un tableau en mémoire, 
avec une base de donnée sur disk, peu importe).

Ca a plein d'avantages. Par exemple il se pourrait qu'en profilant le 
code tu t’aperçoive que list.add() fini par prendre plein de temps 
(normal c'est du O(n^2) ce truc). Alors tu peux remplacer les ArrayList 
par un LinkedList qui fait un ajout en temps constant (O(1)) facilement:
	List<Truc> list = new LinkedList<>();
Voila, et c'est tout! Pas besoin de tracer les variables du type 
ArrayList dans le code pour changer leur type. Non tu y a pensé avant et 
les a toutes déclarées avec l'interface la plus généraliste dont tu 
avais besoin: ici une liste. Remarque: Si en fait dans le code tu 
n'avais pas besoin de l'aspect ordonné des objets tu aurais utilisé une 
Collectioon au lieu de List (rappel: le plus général). Si tu ne voulais 
pas en plus avec deux fois le même objet dans la collection, tu aurais 
utilisé un Set etc.

Bref: dans les déclarations (méthodes, variables, champs) il faut 
toujours privilégier l' _interface_ la plus générale dont on ait besoin. 
Ca facilite la maintenance du code en plus de montrer que tu sais ce que 
tu fais quand tu programmes.

Enfin: laisse tomber les Vector, ce truc est vieux, obsolète et mal 
conçu: Toutes les méthodes sont synchronisées ce qui te bouffe les perfs 
pour rien. Utilises ArrayList<> à la place. Et si tu as vraiment besoin 
d'accès synchronisés (ca m'étonnerait: tu ne fais pas du multithread) il 
te suffit d’enrober la creation de l'ArrayList avec 
https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#synchronizedList(java.util.List)

sam.

Back to fr.comp.lang.java | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-03 16:16 +0000
  Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-07 15:03 +0100
    Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-09 01:28 +0000
      Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-09 09:15 +0100
        Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-11 13:48 +0000
          Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-11 18:33 +0100
            Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-14 03:39 +0000
              Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-14 12:27 +0100
                Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-15 03:48 +0000
                Re: Aide pour une stratégie de programmation. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2017-11-15 08:44 +0100
                Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-15 09:10 +0100
                Re: Aide pour une stratégie de programmation. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2017-11-15 09:31 +0100
                Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-17 01:45 +0000
                Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-15 04:45 +0000
                Re: Aide pour une stratégie de programmation. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2017-11-15 09:44 +0100
                Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-17 01:33 +0000
                Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-15 09:57 +0100
                Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-17 01:24 +0000
                Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-17 08:32 +0100
                Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-19 06:08 +0000
                Re: Aide pour une stratégie de programmation. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2017-11-19 08:38 +0100
                Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-19 12:27 +0000
                Re: Aide pour une stratégie de programmation. Samuel DEVULDER <samuel-dot-devulder@laposte-dot-net.invalid> - 2017-11-20 01:33 +0100
                Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-20 20:51 +0000
                Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-19 10:13 +0100
                Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-19 10:51 +0100
                Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-19 12:20 +0000
                Re: Aide pour une stratégie de programmation. Yliur <yliur@free.fr> - 2017-11-19 14:42 +0100
                Re: Aide pour une stratégie de programmation. bloiiing <bloiiing.invalid@yahoo.com> - 2017-11-19 15:55 +0000

csiph-web