Szukaj
Loguj
IRC #wirtuals
Forum
  Home arrow JavaScript arrow Porady JavaScript arrow Zanim napiszesz skrypt
Wstępnie
Home
Forum
Publikacje
Wiadomości
Prasa
HTML
CSS
PHP
Flash
JavaScript
Grafika
Czcionki
Recenzje programów
Wstawki
Statystyki
Wyszukaj
Newsletter








Forum Honda CBR

Zanim napiszesz skrypt | Drukuj |  Email
Napisał Bartłomiej Kuczyński (1294 odsłon)   
08.11.2006 22:35

Początkowo miał to być tekst poświęcony instalacji obcych skryptów na tworzonej stronie. Jednak po przemyśleniu postanowiłem obrócić kota ogonem i napisać coś dla programistów.

Coraz częściej spotykam się na różnych forach poświęconych programowaniu z takim oto problemem. „Nie działa mi skrypt pomóżcie!” oczywiście w przypływie altruistycznej dobroci pomagam jak mogę takim osobą, ale ostatnio dokonałem ciekawej obserwacji.

Coraz więcej błędów w działaniu skryptów jest spowodowane nie złym podpięciem lecz błędem programisty. Zazwyczaj osoba tworząca skrypt JS zakłada iż:


  • jego użytkownik zna dobrze JS.

  • Będzie wstanie „rozkminić” kod

  • jest na tyle inteligentny że nie będzie potrzebował dokumentacji


Wszystkie trzy założenia są błędne! Zazwyczaj jak piszemy kod który ma być udostępniony szerszej grupie odbiorców musimy założyć iż:


  • odbiorca końcowy nie zna JS

  • odbiorca końcowy liczy na bezawaryjne działanie skryptu


O ile drugie założenie dość łatwo spełnić wykonując testy jednostkowe i całościowe na etapie implementacji to pierwszy punk zazwyczaj stanowi problem.

Dobrym rozwiązaniem jest stworzenie skryptu który będzie bardzo prosty do uruchomienia nawet w kilku egzemplarzach na jednej stronie. Idealnym by skrypt uruchamiany był w jednej linijce... Taki efekt jest bardzo trudny do uzyskania. Skrypty operują zazwyczaj na obiektach DOM, lub powinny mieć różne parametry w zależności od tego co chce uzyskać użytkownik. Dodatkowym problemem jest zapewnienie działania skryptu na różnych przeglądarkach.

Dobra.... nie ma rzeczy niemożliwych. Chcąc napisać skrypt który będzie uruchamiany w jednej linijce warto przestrzegać kilku prostych zasad:

  • pisz obiektowo! Na stronie możesz mieć wiele takich samych obiektów tym samym możesz uruchomić swój skrypt wiele razy na jednej stronie

  • pisz konfigurację domyślną. To ułatwia życie. Naprawdę. Przecież wiele skryptów w konfiguracji domyślnej zaspokaja potrzeby użytkowników.

  • Twórz metodę init() i funkcję RunScript(). Pierwsza niech uruchamia skrypt, druga niech pozwala na uruchomieni skryptu w ustawieniach domyślnych.

  • Twórz dokumentację... bez komentarza

  • Postaraj się by potencjalne wyjątki w skrypcie były, o ile to możliwe, obsługiwane w skrypcie. Jeżeli jakaś funkcjonalność może zwrócić błąd i nie wiesz jak go obsłużyć, zaznacz to w dokumentacji.


Przykład:

Skrypt wykrywający czy mamy do czynienia z przeglądarką Opera i wyświetlający komunikat w podanym elemencie DOM, lub zwracający alert:

function IsOpera(){
    this.message = "To jest Opera"; //domyslny komunikat
    this.target = null; //miejsce gdzie ma być pokazany komunikat
    this.ALERT = "isOperaAlertConst";
    var o = this;
    this.init = function(){
        if(o.target==null){
            var t = document.createElement("div");
            t.id = "isOperaTargetDIV";
            document.body.appendChild(t);
        }
        else if(o.target == o.ALERT){
            var isO = o.isOpera();
            if(isO) alert(o.message);
        }
        else{
            if(document.getElementById(o.target)!=null || document.getElementById(o.target)!="undefined"){
                var isO = o.isOpera();
                if(isO) document.getElementById(o.target).innerHTML = (o.message);
            }
            else if(o.target!= null || o.target!="undefined"){
                var isO = o.isOpera();
                if(isO) o.target.innerHTML = (o.message);
            }
        }
    }
    this.isOpera = function(){
        var ua = navigator.userAgent.toLowerCase();
        if(ua.indexOf("opera")>-1){
            return true;
        }
        else{
            return false;
        }
    }
}
/**
* uruchomienie w ustawieniach domyślnych
*/
function RunIsOpera(){
    (new IsOpera()).init()
}
/**
* przykład uruchomienia z parametrami
*/
document.body.onload = function(){
    var isO = new IsOpera();
    isO.target = isO.ALERT;
    isO.message = "Niestety jest to Opera";
    isO.init()
}

 

Fajne, prawda? Użytkownik końcowy może zatem albo napisać RunIsOpera() i uruchomić całość w ustawieniach domyślnych, albo może wykorzystać przykład z dołu kodu by stworzyć odpowiednią konfigurację. No i na koniec krótka dokumentacja.

Obiekt IsOpera – służy do wykrywania przeglądarki Opera

pola:

message – przechowuje informację która zostanie wyświetlona

target – przechowuje referencję do miejsca w którym ma zostać wyświetlona informacja, może być równy stałej ALERT.

ALERT – stała określająca czy komunikat ma pojawić się w postaci alertu. Przypisanie jej wartości do pola target powoduje wyświetlenie alertu

Metody:

void init() – uruchamia skypt

boolean isOpera() - zwraca wartość logiczną prawda gdy przeglądarka to opera i fałsz w przeciwnym wypadku

Warto poświęcić trochę czasu by skrypt który publikujemy działał bezproblemowo. Godzina więcej na testy i dokumentację to dużo zaoszczędzonego czasu na konserwacji kodu w przyszłości oraz więcej zadowolonych użytkowników.

 

Następny >
Czytaj więcej ...
Loading ...

FIREFOX.PL GOOGLE.PL OPERA.COM
GMAIL.COM KONNEKT.INFO SKYPE.COM
PhpSolmag.org
Kontakt | Mapa serwisu
STAT.PL
validator.w3.org jigsaw.w3.org
Polska Strefa czwartej części gry z serii Gothic
18
pędzle, szczotki, miotły, producent pedzli, producent szczotek