Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [www]ocena mojego "portfolio"
Forum PHP.pl > Inne > Oceny
Stron: 1, 2
tzm
Cytat(Tuminure @ 3.04.2015, 19:47:57 ) *
Co się nie da, jak się da?
[JAVASCRIPT] pobierz, plaintext
  1. var secretBoolToObjectSwitch = false,
  2. sad = function() {
  3. if(secretBoolToObjectSwitch) {
  4. return {stop: function() { alert('This is bullshit'); }};
  5. } else {
  6. secretBoolToObjectSwitch = true;
  7. return true;
  8. }
  9. },
  10. beAwesome = function() {
  11. alert('and especially not awesome.');
  12. };
  13.  
  14. if (sad() === true) {
  15. sad().stop();
  16. beAwesome();
  17. }
[JAVASCRIPT] pobierz, plaintext


Ja to trochę prościej widziałem, wręcz bym rzekł - 5 linijek kodu. Ale też spoko. Tezę miałem, dowód się znalazł.
Tuminure
Zapomniałem jeszcze dodać, że mimo tak krótkiego kodu uznałbym to za dość dobry przykład złych praktyk (a konkretnie zwracanie różnych typów, uzależnianie funkcji/metody od parametrów z zewnątrz, zamiast przekazywania ich do metody).

No i można krócej, pousuwać parę enterów i np. nie deklarować zmiennej. Chciałem jednak zachować czytelność smile.gif.

[JAVASCRIPT] pobierz, plaintext
  1. var sad = function() {
  2. return typeof secretBoolToObjectSwitch !== 'undefined' ? {stop: function(){ alert('This is bullshit')}} : function() { secretBoolToObjectSwitch = true; return true; }();
  3. };
  4. beAwesome = function() { alert('and worse than before.')};
  5.  
  6. if (sad() === true) {
  7. sad().stop();
  8. beAwesome();
  9. }
[JAVASCRIPT] pobierz, plaintext
tzm
A jak w php działają settery i gettery? Nie zwracają wartości deklarowanych poza funkcją? Tez się tak robi.. Przy sliderach dość często.
Janusz1200
Cytat(Tuminure @ 4.04.2015, 10:02:45 ) *
przykład złych praktyk


Ja przyspawałem się do myśli, patrząc na ten obrazek, że obiekt nie "modyfikuje się sam", a czeka na modyfikację z zewnątrz. Przy innym założeniu (jak np. w Twoim kodzie) wystarczy tak:

if (sad() === true) {
//już jestem wesoły, nic mi tu nie trzeba z zewnątrz wciskać, pełna hermetyzacja
}

Niemniej jednak teza, że "to nigdy nie zadziała" jest zawsze ryzykowna i nie powinno się jej nigdy stawiać smile.gif
Beniooo
Chłopaki, taka dyskusja na temat obrazka, podziwiam Was :3
tzm
Studiowałeś? Tu chodziło o tezę i dowód. Jak we wszystkich naukach ścisłych do których programowanie na dzień dzisiejszy jest zaliczane ( swoją drogą nie ogarniam dlaczego biggrin.gif )

@Janusz , przejrzyj sobie kod jakiejś gry w javascripcie bardziej zaawansowanej niż snake czy memory, obiekty same mogą zmieniać wartości i właściwości, dlaczego by nie mogły? zależy teraz czy odróżniamy instancje klasy od obiektu pełnego funkcji, np taka Player{} która mogła a nawet powinna była sprawdzać masę rzeczy w locie.


edit: poza tym w js da się wszystko. zależy od programisty, wyobraźni i doświadczenia w pisaniu.
Comandeer
Cytat("tzm")
poza tym w js da się wszystko. zależy od programisty, wyobraźni i doświadczenia w pisaniu.

To tak samo jak w CSS - wszak Turing complete wink.gif

Ok, reszta się poznęcała nad treścią, ale jakoś tak nikt się bliżej nie zainteresował stroną techniczną strony. A z racji tego, że to mój konik, pozwolę sobie zauważyć kilka rzeczy wink.gif
  • Kodowanie zostaje zdefiniowane dwukrotnie - raz przy pomocy zapisu z HTML4, a drugi przy pomocy skróconej składni HTML5
  • [rel=shortcut] to dziwactwo IE, więc serwowanie mu ikonki w png nie jest najfortunniejszym pomysłem
  • Czy aby konieczne Ci jest to RocketScript i ogólnie CloudFlare? IMO przerost formy nad treścią

  • Kod
    <img src="up.png" id="arrow" onClick="java script:scrollToTop();">

    Polecam poczytać o tzw. labels w JS + obowiązkowo nieśmiertelny artek porneLa - https://pornel.net/onclick

  • Kod
    <img src="logo.png" width="150px" id="logo">

    Każdy obrazek powinien mieć [alt] - tym bardziej jeśli pełni ważną funkcję, jak logo! Dodatkowo twierdzę, że tego typu rzeczy to nagłówki. Brakuje także odnośnika do strony głównej Twojej witryny

  • Kod
    <div id="spacer" style="height: 100px;"></div>

    Klasyka gatunku wink.gif
  • Fajnie, że próbujesz (albo to CF?) zabezpieczać mail przed botami… problem polega na tym, że mój bot oparty na PhantomJS bez problemu wykona skrypt JS i dobierze się do poprawnego adresu.
  • De facto wszystkie menu powinny być listami - wyjątku nie stanowi tutaj menu w stopce, które również listą być powinno. &bull; można łatwo wcisnąć jako li + li::before
  • Podstrona "about" - polecam do poczytania: http://blog.paciellogroup.com/2013/10/html...cument-outline/

  • Kod
    <ul>
        <li><b>Nazwa:</b> Wartość</li>
    </ul>

    Tego typu struktura o wiele bardziej przywodzi na myśl inny typ listy w HTML - listę definicji
    Kod
    <dl>
        <dt>Nazwa</dt>
        <dd>Wartość</dd>
    </dl>

  • W tym wypadku dodatkowo te informacje kontaktowe otoczyć można w address, gdyż są to dane kontaktowe dotyczące danej strony
  • Podstrona z pracami
    Kod
    <a class="btn btn-default" href="#" role="button" onClick="java script:togglePopup(1, 3);">Szczegóły &raquo;</a>

    To jest po prostu głupota. Polecam sprawdzić jakie wymagania stawia ARIA, gdy chcemy wykorzystać link jako przycisk. Dostawienie [role=button] sprawy nie załatwia - co więcej, pogarsza ją, przedstawiając element jako przycisk, podczas gdy nie udostępnia on odpowiedniej funkcjonalności. W tym wypadku powinien być zastosowany po prostu button, a obsługa kliknięcia wykonana POPRAWNIE, zatem z poziomu JS, nie kodu HTML.
  • Takie pytanie dodatkowe - a co jeśli z różnych względów nie mam obsługi JS w przeglądarce? Czemu domyślnie szczegóły wszystkich zleceń są ukryte? Powinny być wyświetlane i ukrywane przy pomocy techniki .no-js. Owszem, przy wyłączonym JS nie będzie to wyglądało aż tak atrakcyjnie, ale przynajmniej informacje będą dostępne dla wszystkich.
  • Wystawienie oceny
    Kod
    <textarea onclick="java script:clearTextarea(this);"

    Śmieszy to tym bardziej, że przy normalnym polu używasz [placeholder]. Pomijam fakt, że textarea można sfocusować bez udziału myszki, przy czym Twój skrypt spektakularnie się wyglebi
  • Gdzie są etykietki poszczególnych pól formularza, opis działania gwiazdek i [alt] dla obrazków? To są podstawy dostępności!
  • Kod
    <small><small><small>2015-05-12 23:45:15</small></small></small>

    Co tu robi small? Od dat jest time, a small wcale nie służy do pomniejszania rozmiaru czcionki - polecam zajrzeć do specyfikacji HTML5
  • Czemu strzałka powrotu do góry miga? Była tak niefunkcjonalna, że aż trafiła jako filtr do Adblocka…
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.