Nazwa dla lekkich i ciężkich operacji

Odpowiedz Nowy wątek
2019-06-23 11:49

Rejestracja: 10 lat temu

Ostatnio: 4 godziny temu

0

Otóż piszę funkcję która musi obsłużyć 10 przypadków

boolean check(Object o)

Dla 8 na 10 przypadków, operacja sprawdzająca jest bardzo szybka (kilkaset operacji na ms). Dla pozostałych 2óch na 10 przypadków szybka operacja sprawdzająca jest czasem nie wystarczająca, więc trzeba zrobić wolną operacją sprawdzającą. Kod powinien wyglądać tak:

boolean check(Object o) {
  if (szybka(o)) {
    return true;
  }
  return wolna(o);
}
  • Operacja szybka() potrafi tylko powiedzieć czy coś spełnia warunek:
    • true znaczy "na pewno spełnia"
    • false znaczy "nie wiadomo czy spełnia"
  • Operacja wolna() sprawdza już to na 100%:
    • true znaczy "na pewno spełnia"
    • false znaczy "na 100% nie spełnia"

No własnie, i nie wiem jak nazwać te metody, tak żeby było z samych nazw wiadomo:

  • Że szybka() jest optymalna, ale potrafi tylko powiedzieć "na pewno tak, ale nie wiadomo czy nie".
  • Że wolna() jest zasobożerna, ale potrafi na 100% ocenić poprawność.

Jakieś pomysły na nazwy?


edytowany 4x, ostatnio: TomRiddle, 2019-06-23 11:52
szybkaNiedokladnaOptymalna(); wolnaDokladnaNieoptymalna() xD - au7h 2019-06-23 11:55

Pozostało 580 znaków

2019-06-23 12:11

Rejestracja: 1 rok temu

Ostatnio: 1 minuta temu

1

@au7h: szybkaNiedokladnaOptymalna(); ostatni człon zawiera się już w pierwszym więc można skrócić nazwę.

W sumie pierwsza to wstępny test więc może preTest() i fullTest()?

Pozostało 580 znaków

2019-06-23 12:12

Rejestracja: 10 lat temu

Ostatnio: 4 godziny temu

0
Delor napisał(a):

W sumie pierwsza to wstępny test więc może preTest() i fullTest()?

Nazwy nie pokazują że fullTest() jest 200-500x bardziej zasobożerna niż preTest().


edytowany 1x, ostatnio: TomRiddle, 2019-06-23 12:12

Pozostało 580 znaków

2019-06-23 18:23

Rejestracja: 13 lat temu

Ostatnio: 50 minut temu

0

isYadaYadaWithFalseNegatives oraz isYadaYada..

Pozostało 580 znaków

2019-06-24 09:54

Rejestracja: 10 lat temu

Ostatnio: 4 godziny temu

0
Afish napisał(a):

isYadaYadaWithFalseNegatives oraz isYadaYada..

Nazwa nie pokazuje czemu ktoś miałby użyć pierwszej (jest szybka).


Pozostało 580 znaków

2019-06-24 11:11

Rejestracja: 11 lat temu

Ostatnio: 2 dni temu

0
boolean check(Object o) {
  if (fastConditionTrueConfirmation(o)) {
    return true;
  }
  return slowConditionTrueFalseConfirmation(o);
}

Pozostało 580 znaków

2019-06-24 11:19

Rejestracja: 1 rok temu

Ostatnio: 2 godziny temu

0
boolean check(Object o) {
    return common_case_fast_check(o) or rare_case_slow_check(o);
}
edytowany 1x, ostatnio: Spearhead, 2019-06-24 11:20

Pozostało 580 znaków

2019-06-24 11:30

Rejestracja: 10 lat temu

Ostatnio: 4 godziny temu

0
Spearhead napisał(a):
boolean check(Object o) {
    return common_case_fast_check(o) or rare_case_slow_check(o);
}

Nie ma informacji o tym że pierwszy umie tylko potwierdzić, ale nie wykluczyć; ani o tym że drugi umie potwierdzić/wykluczyć na 100%.


Takie rzeczy dopisz w dokumentacji funkcji. - Spearhead 2019-06-24 11:33
Ew. twój fast może zwracać trójstanową zmienną, w rodzaju std::optional<bool>. - Spearhead 2019-06-24 11:35

Pozostało 580 znaków

2019-06-24 11:35

Rejestracja: 9 lat temu

Ostatnio: 15 godzin temu

3

shallow_check
deep_check

Pozostało 580 znaków

2019-06-24 11:40

Rejestracja: 5 lat temu

Ostatnio: 3 godziny temu

1
  1. W interfejsie publicznym: check()
  2. W implementacji (prywatnej):
    • check_common_cases()
    • check_edge_cases()

Pozostało 580 znaków

2019-06-24 11:41

Rejestracja: 2 lata temu

Ostatnio: 2 godziny temu

0

fastSensitiveCheck i slowSensitiveAndSpecificCheck - https://en.wikipedia.org/wiki/Sensitivity_and_specificity

Można dodać ewentualnie NotSpecific do pierwszego.

edytowany 2x, ostatnio: Michał Sikora, 2019-06-24 11:44

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: CCBot