Ik ben hobby-scripter/wannabe-developer, keep that in mind
Dat gezegd hebbende vind ik letterlijk alles waarover je feedback wil geven prima hoor, geen probleem. Zelfs als je met een enkele regel komt die alles doet wat ik heb gemaakt, dan kun je dat zeggen
Leer ik alleen maar van. Goed, het gaat om het volgende. Ik heb een stukje code geschreven met daarin een functie. In die functie zit een loop met daarin weer een loop. Volgens mij prima want ik wil voor elke arraywaarde (object) (moederloop) meerdere mogelijkheden uitrekenen, wat ik dus met de tweede loop doe (kindloop
). Het werkt en geeft de gewenste output. Alleen....ik vind dat de leesbaarheid te wensen over laat. Wellicht door de vele losse comments (juist een poging tot documenteren) maar ik heb het gevoel dat een loop in een loop in een functie ook niet helpt. Daarom vroeg ik mij af, is het voor de leesbaarheid handiger dat ik de diepste loop eruit haal en in een eigen functie stop? Ik heb de zoekmachine geraadpleegd voor meningen en advies op internet maar niks gevonden. Het maken is niet het probleem, ik ben meer op zoek naar feedback van mensen met ervaring.
Let op: dit is alleen die functie. hoursInBlock is een integer die aangeeft hoeveel uur in een aaneengesloten blok moeten zitten.
Let op: dit is alleen die functie. hoursInBlock is een integer die aangeeft hoeveel uur in een aaneengesloten blok moeten zitten.
code:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| function findCheapestHours(hoursInBlock) { let calculatedPrice let consecutiveHourCount let bestPricedBlockStart let arrayHour let nextHour let epochSecondsToAdd = 0 let sumHourPrices = 0 //For every hour in array for ( var arrayCount = 0; arrayCount <= price_array.length - hoursInBlock; arrayCount++ ) { sumHourPrices = 0 arrayHour = price_array[arrayCount] //Calculate average price for coming <hoursInBlock> hours for ( consecutiveHourCount = 0; consecutiveHourCount < hoursInBlock; consecutiveHourCount++ ) { //Add 3600 seconds for every extra consecutive hour epochSecondsToAdd = consecutiveHourCount * 3600 //Find next hour in price array based on extra added 3600 seconds nextHour = price_array.findIndex( (object) => new Date(object.startsAt).getTime() == new Date(arrayHour.startsAt).getTime() + (epochSecondsToAdd * 1000) ) sumHourPrices += price_array[nextHour].total } //Calculate average price by dividing sum of prices by amount of hours calculatedPrice = sumHourPrices / hoursInBlock //If calculated average price is lower than already stored calculated price if ( bestPricedBlockStart == null || calculatedPrice < bestPricedBlockStart.total ) { //Store current hour as best priced to start action bestPricedBlockStart = arrayHour } } console.log("Definitieve beste start: " + bestPricedBlockStart.startsAt) return bestPricedBlockStart } |
3600wp string @ 115° oost | 825wp panelen/750wp micro's @ 13°/115° oost | 1475wp panelen / 1250wp micro's @ 27°/205° graden zuid
Ecodan warmtepomp
Repo's: HA-Solar-control | HA-heatpump-planning