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 |
||
| 40 | class CirclesRequestBuilder { |
||
|
|
|||
| 41 | |||
| 42 | const TABLE_CIRCLES = 'circles_circles'; |
||
| 43 | const TABLE_MEMBERS = 'circles_members'; |
||
| 44 | |||
| 45 | /** @var IDBConnection */ |
||
| 46 | protected $dbConnection; |
||
| 47 | |||
| 48 | /** @var L10N */ |
||
| 49 | protected $l10n; |
||
| 50 | |||
| 51 | private $default_select_alias; |
||
| 52 | |||
| 53 | |||
| 54 | /** |
||
| 55 | * Join the Circles table |
||
| 56 | * |
||
| 57 | * @param IQueryBuilder $qb |
||
| 58 | */ |
||
| 59 | protected function joinCircles(& $qb, $field) { |
||
| 65 | |||
| 66 | |||
| 67 | /** |
||
| 68 | * Limit the request to the Share by its Id. |
||
| 69 | * |
||
| 70 | * @param IQueryBuilder $qb |
||
| 71 | * @param int $circleId |
||
| 72 | */ |
||
| 73 | protected function limitToCircleId(IQueryBuilder &$qb, $circleId) { |
||
| 79 | |||
| 80 | |||
| 81 | /** |
||
| 82 | * Limit the request by its Id. |
||
| 83 | * |
||
| 84 | * @param IQueryBuilder $qb |
||
| 85 | * @param int $id |
||
| 86 | */ |
||
| 87 | protected function limitToId(IQueryBuilder &$qb, $id) { |
||
| 93 | |||
| 94 | |||
| 95 | /** |
||
| 96 | * Limit the request by its UniqueId. |
||
| 97 | * |
||
| 98 | * @param IQueryBuilder $qb |
||
| 99 | * @param int $uniqueId |
||
| 100 | */ |
||
| 101 | protected function limitToUniqueId(IQueryBuilder &$qb, $uniqueId) { |
||
| 107 | |||
| 108 | |||
| 109 | /** |
||
| 110 | * Limit the request by its Token. |
||
| 111 | * |
||
| 112 | * @param IQueryBuilder $qb |
||
| 113 | * @param $token |
||
| 114 | */ |
||
| 115 | protected function limitToToken(IQueryBuilder &$qb, $token) { |
||
| 121 | |||
| 122 | |||
| 123 | /** |
||
| 124 | * Limit the request to a minimum member level. |
||
| 125 | * |
||
| 126 | * @param IQueryBuilder $qb |
||
| 127 | * @param $level |
||
| 128 | */ |
||
| 129 | protected function limitToMemberLevel(IQueryBuilder &$qb, $level) { |
||
| 135 | |||
| 136 | |||
| 137 | /** |
||
| 138 | * add a request to the members list, using the current user ID. |
||
| 139 | * will returns level and stuff. |
||
| 140 | * |
||
| 141 | * @param IQueryBuilder $qb |
||
| 142 | * @param string $userId |
||
| 143 | */ |
||
| 144 | protected function leftJoinUserIdAsMember(IQueryBuilder &$qb, $userId) { |
||
| 162 | |||
| 163 | /** |
||
| 164 | * @param IQueryBuilder $qb |
||
| 165 | * |
||
| 166 | * @deprecated |
||
| 167 | * never used in fact. |
||
| 168 | */ |
||
| 169 | protected function leftJoinOwner(IQueryBuilder &$qb) { |
||
| 186 | |||
| 187 | |||
| 188 | /** |
||
| 189 | * Base of the Sql Select request for Shares |
||
| 190 | * |
||
| 191 | * @return IQueryBuilder |
||
| 192 | */ |
||
| 193 | protected function getLinksSelectSql() { |
||
| 203 | |||
| 204 | |||
| 205 | /** |
||
| 206 | * Base of the Sql Select request for Shares |
||
| 207 | * |
||
| 208 | * @return IQueryBuilder |
||
| 209 | */ |
||
| 210 | protected function getSharesSelectSql() { |
||
| 223 | |||
| 224 | /** |
||
| 225 | * Base of the Sql Insert request for Shares |
||
| 226 | * |
||
| 227 | * @return IQueryBuilder |
||
| 228 | */ |
||
| 229 | protected function getSharesInsertSql() { |
||
| 236 | |||
| 237 | |||
| 238 | /** |
||
| 239 | * Base of the Sql Update request for Shares |
||
| 240 | * |
||
| 241 | * @param string $uniqueId |
||
| 242 | * |
||
| 243 | * @return IQueryBuilder |
||
| 244 | */ |
||
| 245 | protected function getSharesUpdateSql(string $uniqueId) { |
||
| 255 | |||
| 256 | |||
| 257 | /** |
||
| 258 | * @return IQueryBuilder |
||
| 259 | */ |
||
| 260 | protected function getMembersSelectSql() { |
||
| 270 | |||
| 271 | |||
| 272 | /** |
||
| 273 | * @return IQueryBuilder |
||
| 274 | */ |
||
| 275 | protected function getCirclesSelectSql() { |
||
| 284 | |||
| 285 | /** |
||
| 286 | * @param array $data |
||
| 287 | * |
||
| 288 | * @return Member |
||
| 289 | */ |
||
| 290 | protected function parseMembersSelectSql(array $data) { |
||
| 300 | |||
| 301 | |||
| 302 | /** |
||
| 303 | * @param array $data |
||
| 304 | * |
||
| 305 | * @return Circle |
||
| 306 | */ |
||
| 307 | protected function parseCirclesSelectSql($data) { |
||
| 328 | |||
| 329 | |||
| 330 | /** |
||
| 331 | * @param array $data |
||
| 332 | * |
||
| 333 | * @return SharingFrame |
||
| 334 | */ |
||
| 335 | protected function parseSharesSelectSql($data) { |
||
| 351 | |||
| 352 | |||
| 353 | /** |
||
| 354 | * @param array $data |
||
| 355 | * |
||
| 356 | * @return FederatedLink |
||
| 357 | */ |
||
| 358 | View Code Duplication | public function parseLinksSelectSql($data) { |
|
| 373 | |||
| 374 | |||
| 375 | } |
This check marks property names that have not been written in camelCase.
In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes
databaseConnectionString.