Nazwa dla lekkich i ciężkich operacji

Odpowiedz Nowy wątek
2019-06-23 11:49
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
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
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
0

isYadaYadaWithFalseNegatives oraz isYadaYada..

Pozostało 580 znaków

2019-06-24 09:54
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
0
boolean check(Object o) {
  if (fastConditionTrueConfirmation(o)) {
    return true;
  }
  return slowConditionTrueFalseConfirmation(o);
}

Pozostało 580 znaków

2019-06-24 11:19
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
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
3

shallow_check
deep_check

Pozostało 580 znaków

2019-06-24 11:40
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
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
Liczba odpowiedzi na stronę

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