Prośba o ocenę formatowania kodu.

0

Cześć, jako początkujący bez doświadczenia znający tylko składnie języka c++ piszę do Was z prośbą o ocenę formatowania mojego kodu. Zacząłem czytać "Czysty kod" , jestem jakoś w 1/4 książki i chciałem spróbować coś zrobić samemu, dla praktyki.

Sam program polega na: 1. Zadana jest funkcja jednoargumentowa y = \lg^2_{}(x - 0.5), x=2.1 2. Z wyniku tej funkcji wybieramy: 4`tą i 7-dmą cyfrę. 3. Po złączeniu obu tych cyfr, wyświetlamy postać powstałej liczby*: binarnie i szesnastkowo. **Złączenie dwóch cyfr w liczbę wygląda tak, że: Jeżeli program ma: 1 i 6, to złączeniem dwóch cyfr będzie 16.*

Kod źródłowy:

```cpp #include <iostream> #include <cmath> #include <iomanip> #include <string> #include <sstream> #include <bitset>

#define NEEDED_PRECISION 9
#define DEC 4
#define DEC_2 7
#define NEEDED_BITS 8

using namespace std;

string ToStringWithPrecision(double formula){
stringstream localStream;

localStream << fixed << setprecision(NEEDED_PRECISION) << formula;
string result = localStream.str();
return result;

}

string separatedNumber(string formula){
char firstDecimal = formula[DEC+1]; //Plus one , because we need real number not an element.
char seoundDecimal = formula[DEC_2+1];

string numberFromTwoDecimal;
numberFromTwoDecimal.push_back(firstDecimal);
numberFromTwoDecimal.push_back(seoundDecimal);
return numberFromTwoDecimal;

}

string toBin(string numberAfterSeparated){
string binary = bitset<NEEDED_BITS>(stoi(numberAfterSeparated)).to_string();
return binary;
}

void printHex(string numberAfterSeparated){
cout <<"0x" << hex << stoi(numberAfterSeparated);
}

int main(){
const float x = 2.1;
const double y = pow(log10(x - 0.5), 2);

string formula = ToStringWithPrecision(y);

string numberFromFormula = separatedNumber(formula);
string binaryFromSeparatedNumber = toBin(numberFromFormula);

cout << numberFromFormula << endl;
cout << binaryFromSeparatedNumber << endl;
printHex(numberFromFormula);

getchar();
return 0;

}

<p>Pytania:</p>
1. Czy po przeczytaniu kodu mniej więcej wiadomo jak program działa?
2. Czy nazwy funkcji są odzwierciedleniem ich działania?
3. Czy zmienne są odpowiednio nazwane?
4. Czy jest czegoś za dużo lub za mało?
5. Czy angielskie* nazwy są poprawne?
<span style="font-size: xx-small;">**Wiem, że mój angielski jest na słabym poziomie, ale pracuje nad tym*</span>

<p>Jeżeli mógłbym ten program napisać w inny sposób i chcesz mi o tym powiedzieć to prosiłbym o zmieszczenie linków do dokumentacji.</p>

<p>Dzięki za poświęcony czas, na pewno każdą sensowną odpowiedź docenię.</p>
2

Co do samego formatowania nie mam większych zastrzeżeń, jeśli określasz się jako newbie to na pewno jest spoko. Ale:

  1. ToStringWithPrecision, separatedNumber PascalCase vs. camelCase. To pierwsze jest niepopularne dla nazw funkcji, ale jak się uprzesz to używaj - ale już bądź konsekwentny.
  2. #define NEEDED_PRECISION 9 piszesz w C++, prawie na pewno nie potrzebujesz preprocesora do stałych
  3. using namespace std to zła praktyka
  4. nie wiem co ma robić separated number
0
  1. Faktycznie, nie zauwazylem tej nazwy z duzej litery.
  2. Czy #define nie jest czytelniejsze niz const? Chyba ze jakos inaczej definiuje sie takie stale?
  3. Trzeba bedzie sie przyzwyczaic :(
  4. Ta funkcja realizuje te dwa podpunkty
PanRiK napisał(a):
  1. Z wyniku tej funkcji wybieramy: 4`tą i 7-dmą cyfrę.
  2. Po złączeniu obu tych cyfr, ...
    **Złączenie dwóch cyfr w liczbę wygląda tak, że: Jeżeli program ma: 1 i 6, to złączeniem dwóch cyfr będzie 16.*

Czyli wybiera dwie cyfry i tworzy z nich liczbę.

Jeżeli funkcja realizuje dwa zadania to powinienem to rozdzielic na dwie mniejsze funkcje?

1

O, nie doczytałem warunków zadania - ale mimo wszystko z treści funkcji za bardzo tego nie zrozumiałem, więc wciąż imo można tutaj popracować.

Co do #define - const to coś innego, ale mamy w C++ constexpr :​)

0

Jakieś propozycje jak to mogę zmienić? Albo inaczej, co w tej funkcji jest niejasne?

1

Ja tam nic nie rozumie, a zwłaszcza seoundDecimal :)
Dobra, po wnikliwym przejrzeniu jednak idzie zrozumieć.

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