powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как раскопипастить методы
11 сообщений из 11, страница 1 из 1
Как раскопипастить методы
    #39903999
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два метода очень похожих, за исключением того, что они используют разные методы у объекта.
Как это можно переписать, чтобы не выглядело как копи-паста?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public function addScoresForAvailableTxBandwidth(array $applicants): void
{
    $result = [];
    foreach ($applicants as $applicant) {
        $node = $applicant->getNode();
        if ($node->getTxMax() > 0) {
            $tx = $node->getTx() > 10 ? $node->getTx() : ($node->getTxMax() - 50);
            $bandwidthAvailable = $node->getTxMax() - $tx;
            $applicant->addScores($bandwidthAvailable);
        }
    }
}

public function addScoresForAvailableRxBandwidth(array $applicants): void
{
    $result = [];
    foreach ($applicants as $applicant) {
        $node = $applicant->getNode();
        if ($node->getRxMax() > 0) {
            $rx = $node->getRx() > 10 ? $node->getRx() : ($node->getRxMax() - 50);
            $bandwidthAvailable = $node->getRxMax() - $rx;
            $applicant->addScores($bandwidthAvailable);
        }
    }
}
...
Рейтинг: 0 / 0
Как раскопипастить методы
    #39904013
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как раскопипастить методы
    #39904015
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


Не, такой вариант я сразу отбросил. Не хотелось бы прибегать к рефлексии.
...
Рейтинг: 0 / 0
Как раскопипастить методы
    #39904030
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать у объекта метод get() и вызывать его с уточнением Tx или Rx
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
public function get(string type) {
   switch {
      case type == "Tx": 
          return getTx();
      case type == "Rx": 
          return getRx();
   }
   // unknown type
}
...
Рейтинг: 0 / 0
Как раскопипастить методы
    #39904035
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если у вас идет разделение методов в объекте node на rx, tx. то очевидно, что и указанные методы надо делать отдельно, то, что они похожи пофигу совершенно. как вариант можно передать 2 делегата для Get?x и Get?xMax и обобщить метод и убрать из его названия Tx, Rx и т.д.
...
Рейтинг: 0 / 0
Как раскопипастить методы
    #39904039
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Чо бы и нет. У пыха простая рефлексия, как я посмотрю. Прям захотелось сесть и запилить фреймворк.
...
Рейтинг: 0 / 0
Как раскопипастить методы
    #39904045
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это все какие-то костыли. Давайте представим что это не пых.
...
Рейтинг: 0 / 0
Как раскопипастить методы
    #39904047
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не обязательно делать один метод который будет комбинировать в себе эти два. Можно вынести общий код отдельно.
...
Рейтинг: 0 / 0
Как раскопипастить методы
    #39904055
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Но как? Это же пых. А если не пых, то что? Сишечка? Switch-case портянка в помощь. Там будет всякое с tp и ветвлением rx/tx.
...
Рейтинг: 0 / 0
Как раскопипастить методы
    #39904295
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett
...представим что это не пых.


темплейты в помощь...
функторы
базовые классы
грань-кристалл

дохрена подходов...это техника...статика в ОО подходе только модель... тогда надо плясать от неё начинать...
а так - сфера+вакуум=хрень полная

(круглый)
...
Рейтинг: 0 / 0
Как раскопипастить методы
    #39904343
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут вариант есть https://www.php.net/manual/ru/functions.anonymous.php

Попробуйте через anonymous.

Эх нет в топике Студентика с его Ультра-короткими языками. Совершенству нет предела.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как раскопипастить методы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]