Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
1 | <?php |
||
11 | class SendgridTransport extends Transport |
||
12 | { |
||
13 | const MAXIMUM_FILE_SIZE = 7340032; |
||
14 | const SMTP_API_NAME = 'sendgrid/x-smtpapi'; |
||
15 | |||
16 | private $client; |
||
17 | private $options; |
||
18 | |||
19 | public function __construct(ClientInterface $client, $api_key) |
||
26 | |||
27 | /** |
||
28 | * {@inheritdoc} |
||
29 | */ |
||
30 | public function send(Swift_Mime_Message $message, &$failedRecipients = null) |
||
57 | |||
58 | /** |
||
59 | * @param $data |
||
60 | * @param Swift_Mime_Message $message |
||
61 | */ |
||
62 | protected function setTo(&$data, Swift_Mime_Message $message) |
||
69 | |||
70 | /** |
||
71 | * @param $data |
||
72 | * @param Swift_Mime_Message $message |
||
73 | */ |
||
74 | protected function setCc(&$data, Swift_Mime_Message $message) |
||
81 | |||
82 | /** |
||
83 | * @param $data |
||
84 | * @param Swift_Mime_Message $message |
||
85 | */ |
||
86 | protected function setBcc(&$data, Swift_Mime_Message $message) |
||
93 | |||
94 | /** |
||
95 | * @param $data |
||
96 | * @param Swift_Mime_Message $message |
||
97 | */ |
||
98 | protected function setReplyTo(&$data, Swift_Mime_Message $message) |
||
104 | |||
105 | /** |
||
106 | * Get From Addresses. |
||
107 | * |
||
108 | * @param Swift_Mime_Message $message |
||
109 | * @return array |
||
110 | */ |
||
111 | protected function getFromAddresses(Swift_Mime_Message $message) |
||
120 | |||
121 | /** |
||
122 | * Set text contents. |
||
123 | * |
||
124 | * @param $data |
||
125 | * @param Swift_Mime_Message $message |
||
126 | */ |
||
127 | protected function setText(&$data, Swift_Mime_Message $message) |
||
136 | |||
137 | /** |
||
138 | * Set Attachment Files. |
||
139 | * |
||
140 | * @param $data |
||
141 | * @param Swift_Mime_Message $message |
||
142 | */ |
||
143 | protected function setAttachment(&$data, Swift_Mime_Message $message) |
||
154 | |||
155 | /** |
||
156 | * Set Sendgrid SMTP API |
||
157 | * |
||
158 | * @param $data |
||
159 | * @param Swift_Mime_Message $message |
||
160 | */ |
||
161 | protected function setSmtpApi(&$data, Swift_Mime_Message $message) |
||
172 | } |
||
173 |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.