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

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
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
class Cmd
{
private:  /* ... */
protected: /* ... */
public:
	virtual void Assign(Cmd *Source) {}
	/* ... */
};
//---------------------------------------------------------------------------
class UARTCmd: public Cmd
{
private: /* ... */
protected:
	byte FCode;
	unsigned short FCRCbytes;
	int FLenData;
	byte FData[256];
	unsigned short FInit_CRC;
	unsigned short FPoly_CRC;

	TypeCommand TypeCmd;
public:
	virtual void Assign(Cmd *Source) { /* .1. */ }
	/* ... */
};
//---------------------------------------------------------------------------
class TRANSITCmd: public Cmd
{
private: /* ... */
protected:
	byte FCode;
	unsigned short FCRCbytes;
	int FLenData;
	byte FData[256];
	unsigned short FInit_CRC;
	unsigned short FPoly_CRC;

	byte FID;

	unsigned short FNumb;
public:
	virtual void Assign(Cmd *Source) { /* .2. */ /* .3. */ }
	/* ... */
};
//---------------------------------------------------------------------------
class ASKCmd: public Cmd
{
private: /* ... */
protected:
	byte FCode;
	unsigned short FCRCbytes;
	int FLenData;
	byte FData[256];
	unsigned short FInit_CRC;
	unsigned short FPoly_CRC;

	byte FID;

	byte FidFrom;
	byte FTimeR;
	unsigned short FSID;
public:
	virtual void Assign(Cmd *Source) { /* .2. */ /* .4. */ }
	/* ... */
};
//---------------------------------------------------------------------------
class RESPCmd: public Cmd
{
private: /* ... */
protected:
	byte FCode;
	unsigned short FCRCbytes;
	int FLenData;
	byte FData[256];
	unsigned short FInit_CRC;
	unsigned short FPoly_CRC;

	byte FID;

	byte FidFrom;
	byte FTimeR;
	unsigned short FSID;

	byte FidResp;
	unsigned short FCRCResp;
public:
	virtual void Assign(Cmd *Source) { /* .2. */ /* .4. */ /* .5. */ }
	/* ... */
};

Сие чудо я должен реализовывать! Так сказать, привести в порядок код.

P.S. Первоначальный вариант выглядит в разы лучше.
P.P.S. /* .1. */ - обозначает часть кода

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

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

  • а вы разве не читали про такой могучий дизайн патторн "копипаст"??? LOL
    Ответить
    • копипаста - это не дизайн паттерн, а методология программирования. она даже более популярна чем ООП. инфа 100%
      Ответить
      • Интересно, если у редактора отшибить возможность Copy (А Cut&Paste оставить), то код станет более умным?
        Или хоть руками, но копипейстить будут?
        Ответить
        • Cut&Paste не обнуляет буфер. Так что отличие от метода Copy&Paste будет только в дополнительном Paste сразу после Cut. 🙂
          В итоге: кнопок больше - результат тот же.
          Ответить
          • Ну, Вы понели, что я имел в виду:)
            А так да, в vi именно так и делается, что-то вроде 3ddP4jP. Да и в emacs иногда проще наубивать строчек, вставить тут, а потом там.
            Ой, я, кажется, спалился!
            Ответить
  • для начала можно запихнуть общие члены-данные потомков в protected предка.

    ко мне пришла идея сделать класс Cmd шаблонным и пихать в качестве параметра шаблона функциональный объект, который собственно и будет реализововать поведение данной комманды.

    и что такое привести в порядок код? рефакторить чтолэ? на говнокоде тусуешься, а умных слов не знаешь. ай я яй!
    Ответить
    • А. Я прочитал первое предложение и подумал про перевод надмозгом какого-нибудь жутко извращенского порнофильма:)
      Ответить
      • Видимо не все ещё из разработчиков привыкли к членам.
        Хотя хреново, если они общие 🙂
        Ответить
  • Кстати, блоки 1, 3 и 5 используются только по одному разу. Непорядок.
    Ответить

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

Где здесь C++, guest?!

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


    8