Jawel, maar eerst worden $isIE en $isIE6 op 0 gezet en later ga je ze aan de hand van if-statements misschien weer op 1 zetten. Koppel dan direct de informele betekenis van de identifiers aan de initialisatie van de variabelen:
PHP:
1
2
3
| $isIE = strpos($HTTP_USER_AGENT, 'compatible; MSIE ')!==false &&
strpos($HTTP_USER_AGENT, 'Opera')===false;
$isIE6 = $isIE && strpos($HTTP_USER_AGENT, 'compatible; MSIE 6')!==false; |
Ik heb gelijk maar even die overbodige Opera-check verwijderd, want het is duidelijk dat $isIE6 onder $isIE valt ($isIE6 kan alleen 1 zijn als $isIE 1 is) en dat komt nu ook veel duidelijker naar voren. In ieder geval worden je variabelen nu maar op één plek ingesteld, zonder branching constructies, wat de code overzichtelijker maakt. (Overigens heb ik ook op nadrukkelijk advies van de PHP handleiding het gebruik van strstr vervangen door strpos).
Het zijn misschien kleine dingetjes, maar als ik zoveel kleine dingetjes bij elkaar zie in een klein stukje code, geeft me dat toch het gevoel van rommelige code. Zeker als de indentation dan ook nog niet klopt, want dat is wel het makkelijkste om goed te krijgen.
Ik ben ook niet van plan om elke lijn code netjes te maken want dan blijf ik aan de gang, Wat ik in dat project doe is dingen from scratch herschrijven en dan produceer ik alleen maar nette code. Dingen die op dit moment werken hebben geen prioriteit in het clean-up proces.
Accoord, maar kom dan niet met die huidige niet-nette code aanzetten met de opmerking "dit is de oplossing".

Kijk, daar hebben we wat aan. Ik heb al zoveel varianten op zulke code gezien dat ik er niets van geloof dat iedereen goede redenen heeft om het anders te doen. Deze code is zo in ieder geval gebaseerd op daadwerkelijk gesignaleerde problemen. Dat is wel zo netjes. (Veel andere mensen hebben het argument: ik heb het wel eens ergens gezien en het werkt zo bij mij wel goed; dat het in een specificieke situatie lijkt te werken is namelijk geen garantie dat je het goed gedaan hebt!)
Een heel ander punt vind ik of je in je software rekening moet houden met bugs die bekend en gefixed zijn. In principe is de fout hier niet echt fataal (je krijgt een extra Save-as dialog te zien) en door de correcte code te genereren stimuleer je gebruikers ook om een correcte browser (upgrade) te installeren. Je kunt toch wel verwachten dat gebruikers zo af en toe een Windows Update (of iets anders, onder een ander besturingssysteem) draaien. Ik vind het wel gek dat je halverwege 2003 nog met een workaround uit 2001 te doen hebt. Ik zou dat soort code er nu zeker gewoon uit mikken, maar ik kan me voorstellen dat dat een persoonlijke (of beleidsmatige) afweging is.
[
Voor 8% gewijzigd door
Soultaker op 19-07-2003 16:10
]