Warning, /graphics/kst-plot/devel-docs/deprecated/whatiswrongwithkst2dplot.txt is written in an unsupported language. File is not indexed.
0001 0002 Kst2DPlot is a monstrosity. Here's why: 0003 0004 1) No single person understands it. Some people understand some of it. No-one 0005 understands all of it. it is quite possible that there are some parts of it 0006 that no-one understands. 0007 0008 2) It's HUGE. The header file alone is 630 lines. The source file is over ten 0009 times that. 0010 0011 3) It has all kinds of functions that are unclear or have side effects. 0012 Example: 0013 setBorders(xleft_bdr_px, xright_bdr_px, ytop_bdr_px, ybot_bdr_px, 0014 tpx, tpy, p, offsetX, offsetY, xtick_len_px, ytick_len_px); 0015 Can you guess what that does? It actually -gets- some values, for instance. 0016 0017 4) Can you guess what any of the variables in (3) mean/are? 0018 0019 5) It's C masquerading as C++. It's a whole bunch of function calls that call 0020 eachother in seemingly unconnected ways. Change one, you break something 0021 elsewhere. 0022 0023 6) Too many ways to do things, or too many things that look the same but aren't: 0024 void setCursorPos(QWidget *view); 0025 void unsetCursorPos(QWidget *view); 0026 void drawCursorPos(QWidget *view); 0027 void drawCursorPos(QPainter& p); 0028 void updateMousePos(const QPoint& pos); 0029 0030 7) Too many different internal states that get flipped back and forth 0031 externally. Display and state need to be separated. Caches should not be 0032 an internal part of the object, they should be abstract. 0033 0034 8) It doesn't come close to following our coding conventions. 0035 0036 9) Shortforms abound: 0037 setXTransformedExp, etcetera 0038 0039 10) Lack of verbosity: 0040 bool suppressRight() const; 0041 void setSuppressTop(bool yes); 0042 0043 11) Implementations in the header file. Makes it hard to fix things properly: 0044 int xMinorTicks() const { return _xMinorTicks - 1; } 0045 int yMinorTicks() const { return _yMinorTicks - 1; } 0046 bool xMinorTicksAuto() const { return _reqXMinorTicks < 0; } 0047 bool yMinorTicksAuto() const { return _reqYMinorTicks < 0; } 0048 0049 12) Passing return values by reference parameters! Evil! 0050 0051 13) Public methods that should be private 0052 0053 14) Way too many things in one class - there's no reason for it to do time 0054 conversions inside, for instance 0055 0056 15) Public member variables!! 0057 0058 16) Pointless virtuals 0059 0060 17) Count them: 107 member variables. 0061 0062 18) No design documentation 0063 0064 19) Inefficiencies all over 0065 0066 20) Algorithms are undocumented and unclear at best, mostly voodoo 0067 0068 21) Too many options are causing way too many branches and nested branches. 0069 This makes testing particularly difficult. 0070 0071 22) float<->int conversions are not well defined, happen far too often 0072 0073 23) C-style casts all over 0074 0075 24) Magic numbers like 1.666666. 0076 0077 25) Dumping grounds are just not cool 0078 0079