Wątek przeniesiony 2022-03-20 17:59 z JavaScript przez cerrato.

Co sądzicie o kodzie?

0

Siemka, co byście poprawili w kodzie, jak ocenianie?
Krótki kod ale pewnie i tu znajdzie się coś do zaczepienia usunięcia żeby nie weszło w nawyk

<html>
    <head>
        <title>Website</title>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <button class="changeBackground">Change</button>
        <canvas id="canvas" width="300" height="300"></canvas>
        <script src="script.js"></script>
    </body>
</html>
body{
    padding: 0;
    justify-content: center;
}
.changeBackground{

    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size:16px

}

const background = document.querySelector('body');
const changeBackground = document.querySelector('.changeBackground');


changeBackground.addEventListener('click', function(){
    console.log('x2');
    console.log(changeRandom());
    
    document.body.style.backgroundColor = changeRandom();
})

function changeRandom(){
    let abc = ['A','F','0','6','7','8','1','2','3','4']
    let abcSecond = ['A','C','D','E','F','0','6','7','1','2','3','4']

    let hash = '#';
    let sumHas = abc[Math.floor(Math.random() * (abc.length))];
    let sumHash2 = abcSecond[Math.floor(Math.random() * (abcSecond.length))];
    let sumHash3 = abcSecond[Math.floor(Math.random() * (abcSecond.length))];
    let sumHash4 = abcSecond[Math.floor(Math.random() * (abcSecond.length))];
    let sumHash5 = abcSecond[Math.floor(Math.random() * (abcSecond.length))];
    let sumHash6 = abcSecond[Math.floor(Math.random() * (abcSecond.length))];

    let x = sumHas + sumHash2 + sumHash4 + sumHash3 + sumHash5 + sumHash6;
    let sumHex = hash.concat(x)
    let a = sumHex;
    return a;

}
console.log(changeRandom());
3

Po pierwsze - za dużo to tego kodu do oceny to nie ma ;)

A po drugie - linie 18 do 23 są baaardzo podobne. Nie lepiej wydzielić to do osobnej funkcji?

3

A nie lepiej wylosować 3x RGB 0-255 i potem zamienić to na hexa niż bawić się w konkatenację stringów?
Poza tym mam wątpliwości czy te changeRandom jest "sprawiedliwe" z punktu widzenia prawdopodobieństwa.

3
lookacode1 napisał(a):

A nie lepiej wylosować 3x RGB 0-255 i potem zamienić to na hexa niż bawić się w konkatenację stringów?

idąc dalej - można by wylosować liczbę od 0 do 2^24 i zamienić ją na reprezentację szesnastkową:

'#' + (Math.floor(Math.random() * 2**24)).toString(16)

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