Кресты / Говнокод #6382 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
//
// mainwindow.h
//
#ifndef MAINMDIWINDOW_H
#define MAINMDIWINDOW_H
/* >:0 Эти инклюды хуже, чем говно, чуть менее, чем полностью */
#include <QMainWindow>
#include <QMdiArea>
#include <QMenu>
#include <QAction>
#include <QMenuBar>
#include <QWebView>
#include <QFile>
#include <QSignalMapper>
#include <QDebug>
#include <QDomDocument>
#include <QToolBar>
#include <QButtonGroup>
#include <QLabel>
#include <QMdiSubWindow>
#include <QApplication>
#include "demoviewer.h"
#include "theoryviewer.h"
class MainMDIWindow : public QMainWindow
  { Q_OBJECT
  public:
    /* >:0 Кэп?! */
    //! Выполняет создание и инициализацию окна приложения.
    explicit MainMDIWindow(QWidget *parent = 0);
  signals:
  public slots:
    /* >:0 А ты догадался, что значат эти аргументы? */
    void openDocument(int); void loadPage(int);
    /* >:0 Это невероятно полезные функции */
    void toggleTheoryWindow(bool state) { tw->setVisible(state); }
    void toggleDemoWindow(bool state) { dw->setVisible(state); }
  protected:
    /* >:0 Это на винде не работало, я просто закомментировал.
           Вероятно, правильнее было бы воспользоваться средствами сборки под разные платформы,
           но я невозбранно комметирую-раскомментирую эту строчку каждый раз при сборке */
    inline void paintEvent(QPaintEvent *e)
    { // mdiArea->setBackground(QBrush(QImage(":/images/photo/s200.jpg").scaled(this->size(), Qt::KeepAspectRatioByExpanding)));
      e->accept();
    }
    // ...
    /* >:0 ЭтаПять! См. тело конструктора */
    QString AppWindowTitle;
    // Просмотровщики материала
    DemoViewer * dv; QMdiSubWindow* dw;
    TheoryViewer* tv; QMdiSubWindow* tw;
    bool lockTheory, lockDemo;
    // Хранение информации о документах
    /* >:0 За такое я впредь обещаю безжалостно резать яйца. Даже себе. */
    QVector< QVector< QHash< QString, QString > > > documents;
    QVector< QHash< QString, QString > > *currentDocument;
    // ...
  };
#endif // MAINMDIWINDOW_H

//
// mainwindow.cpp
// Далее следуют отдельные вырезки
//
#include "mainmdiwindow.h"
MainMDIWindow::MainMDIWindow(QWidget *parent) : QMainWindow(parent)
  { /* >:0 Вот зачем нам понадобился атрибут QString AppWindowTitle! */
    AppWindowTitle = tr("ЦВМ «Пламя-КВ» ЗРК С-200ВЭ");
    setWindowTitle(AppWindowTitle);
    // ...
    // Инициализация окон просмотровщиков
    /* >:0 Вы меня понимаете, не? хД */
    tv = new TheoryViewer(); tw = mdiArea->addSubWindow(tv); tw->hide(); tv->setParent(tw); lockTheory = true;
    dv = new DemoViewer(); dw = mdiArea->addSubWindow(dv); dw->hide(); dv->setParent(dw); lockDemo = true;
    // ...
  }
void MainMDIWindow::openDocument(int id)
  { // ...
    /* >:0 Нижеследующая конструкция читает HTML файл в UTF-8,
           заменяет пути на абсолютные и запихвает получивуюся какуху в QWebView */
    QFile in(textLink); bool t = in.open(QIODevice::ReadOnly | QIODevice::Text);
    tv->setHtml(QString::fromUtf8(in.readAll()).replace(QString("./"), QApplication::applicationDirPath() + '/'));
    in.close();
    // ...
  }

ИМХО, это МЕГОКОД. И я обещаю больше так никогда не делать ^^
Вбросы говн в потоковых комментариях, начинающихся с православного смайла >:0

Запостил: Surendil Surendil, (Updated )

Комментарии (15) RSS

  • Правильный порядок действий такой: проектирование -- реализация, причём проектирование не абы-как, а вдумчиво и предусмотрительно. И всё у вас будет замечательно =)
    Ответить
    • если бы все сидели и без конца проектировали, вдумывались и ковыряли все мелкие детали, полировали и анализировали каждую строчку перед релизом - то никто бы никогда никакого софта до конца не дописал и не выпустил. потому что бы задолбались.

      а если уж написал что-то что работает, решает подручную проблему, что работает и помогает другим, то накой в Ж сидеть полировать каждую строчку?

      софт то пишется не для того что бы быть идеальным, а для того что бы решать конкретные проблемы.

      правда заключается в том что весь софт начинает жизнь как ГК. и очень большому количеству одноразового софта, как и его пользователям, статус ГК никоем образом не мешает решать ихние проблемы.
      Ответить
      • оО я не проповедовал полирование каждой строчки, вы о чём? Я про предварительное проектирование загнул только ради того, чтобы написание чего-то хотя бы мало-мальски сложного не превращалось в прикручивание костылей к ушным протезам (как произошло в моём говнокоде).
        Если бы я не поленился и вспомнил про UML (или некое "карандашное" подобие) и набросал пару-тройку диаграмм -- включая д. классов -- всё было бы замечательно.
        Ответить
        • UML - замечательная вещь. Впрочем, лично для меня это не так визуально, предпочитаю описывать интерфейсами и абстрактными классами )
          Ответить
          • Я сначала UML не особо как понимал, а меня однокашники не понимали )
            Абстрактные классы для меня, к сожалению, пока что не так наглядны, как разноцветные картинки. Хотя это уже живое, да... )
            Ответить
  • А в конце надо было дописать:
    "Чмоки всем в этом уютном чяти =*)"
    Ответить
  • Да, кстати, господа. Кто что насчёт Qt думает? Стоит ли оным заинтересоваться для разработки чего-нибудь в будущем? Не нарежет ли оно коней из-за соглашения Нокии с Микрософтом?
    Ответить
    • Да вряд ли что-то случится, я думаю. Qt штука, как ни крути, классная, да и кеды, если я не ошибаюсь, на нём написаны.
      Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8