[Przemyślenia] Styl kodowania...

0

Tak se rozmyslam. Wiadomo, ze PHP jest krytykowany za "styl kodowania". Poniewaz od samego poczatku zalecal styl z "podkresleniem", czyli: get_method(). Mozna zauwayc, ze w klasach w PHP5 wspierany jest czesciel camel style, czyli: getMethod(). Zend to juz w ogole udziwnia: Zend_Db_Table, czyli polaczenie tych dwoch stylow ;)

Jaki Wy preferujecie?

0

ja osobiscie preferuje styl get_method(). Jak dla mnie jest znacznie czytelniejszy.

0

javaStyle() :-)

Pierwszy wyraz małą literą, kolejne wielką. W PHP piszę tak samo. Wydaje mi się wygodniejsze, nie trzeba sięgać co chwilę do _, a czytelność wcale nie spada.

0

Skoro jest pytanie o preferencje, to ja mam następujący zwyczaj: piszę kapitalikami, po angielsku, pojęciowo od końca. Kapitalikami bo jest dla mnie czytelniej; po angielsku bo się nie odmienia; pojęciowo od końca, bo rzeczy powiązane zaczynają się tak samo, na przykład:

class ModelDatabaseUser
{
//..
}

class ModelDatabaseAdmin
{
//..
}

class ModelSessionUser
{
//..
}

class ModelSessionGuest
{
//..
}

Gdy w projekcie (bez względu na język) występują zarówno klasy (również abstrakcyjne), interfejsy itp, to poprzedzam ich nazwę literą:

  • I - interfejs
  • A - klasa abstrakcyjna
  • C - klasa nieabstrakcyjna (w Delphi poprzedzam: T)
  • T - klasa obudowująca dane, rekord

Nie lubię wielbłądziego stylu [ userSessionModel() ], bo od małej litery mam zwyczaj nazywać obiekty lub zmienne. Styl z podkreśleniami [ user_session_model() czy User_Session_Model() ] jest dla mnie nieczytelny w środku kodu - nie zawsze mój wzrok potrafi w gąszczu krzaczków wyłapać, że jest to jedna a nie kilka nazw razem. Kilku moich znajomych preferuje styl kapitalikowy z podkreśleniami [ User_session_model() ], bo widząc słowo od małej litery wiedzą, że nie jest to początek nazwy funkcji/klasy ale do mnie nie przemawia, bo wyrazy od małej litery automatycznie kojarzą mi się z nazwami zmiennych.

Zatem metody/funkcje/procedury nazywam w stylu: GetUserAge(), SetPropertyBan().

0
class DotNetStyle
{
    private var $someVariable;
    public function GetSomeVariable();

    private function someFunction($someParameter)
    {
        // gdzie te 4 spacje to tab jest
        $localVariable = 4;
        $i = 2;
    }
    public function SomeOtherFunction($someParameter);
}

czyli dotnetowo tak w gruncie rzeczy - z komentarzami // w większości (/* tylko do bloków phpDoc) ;-) JavaStyle za tą pierwszą mała literkę mi nie odpowiada.

Nazewnictwo klas odwrotnie niż u Szczawika:

UserModel, UserController extends SomeController i tak dalej. Literka I do interfejsów także, jak i rekordy. Nie mam przedrostków dla klas abstrakcyjnych i nie.

// ha, każdy pisze inaczej i Adam będzie musiał ankietę zrobić chyba ;-)

0

Ja w sumie identycznie jak Ktoś z tym, że metody i nazwy zmiennych zaczynam od małej litery. Z interfejsami podobnie (litera I przed nazwą która też jest z wielkiej - np IDataResource), klas abstrakcyjnych unikam jak ognia więc jakiegoś specjalnego nazewnictwa nie potrzebuje. Nazwy klas też odwrotnie niż u Szczwika, do tego preferuje długie, zrozumiałe nazwy (DataResourceFactory, ContainerWithDataResource, getUserPermission).

<?php

/**
 * Kontener dostarcza metodę do dołączania kolejnych
 * warstw logicznych.
 */
abstract class Container
{
	/**
	 * Instancjuje i dołącza do kontenera klase $className,
	 * jeśli klasa jest typu ISingleton, tworzona jest jej
	 * referencja.
	 */
	protected function load($className, $name = null)
	{
		if ($name)
			$this->$name =& Core::getSingleton()->load($className);
		else
			$this->$className =& Core::getSingleton()->load($className);
	}
}

?>

Jako ciekawostke dodam, że tak samo programuje w C++, w C# to już całkiem jak Ktoś.

I jeszcze mały szczegół - nie mogę żyć bez mojego customowego kolorowania:

user image

0
Szczawik napisał(a)

pojęciowo od końca, bo rzeczy powiązane zaczynają się tak samo

To dla mnie wada. W VIM-ie gorzej mi się uzupełnia, jak się zaczyna od tych samych liter, bo muszę ich dużo wpisać.

W Coyote się nie udzielam, ale swoje 5gr dorzucę, skoro już zacząłem :P

Ponieważ piszę najwięcej w Pythonie, to piszę według PEP8.

Gdy piszę w Javie, to według Code Conventions for the Java Programming Language

W C i C++ wcięcia generalnie jak BSD_KNF_style z tą różnicą, że wszędzie 4 spacje wcięcia. Nazewnictwo jak w Pythonie.

0

Ja zdecydowanie preferuję getUserOptions() - czyli z małej i wielbłądzi - żadnych podkreślników (szczerze, to rzadko widzę kod z podkreśleniami)

Czy zaczynać z wielkiej czy z małej w zaleśności np. od widzialności zmiennej/funkcji to generalnie fajna sprawa, ale osobiście nie mam takiego nawyku i tego nie stosuję. Pewnie dlatego, że bardzo rzadko korzystam z private, a już nigdy z protected (w PHP oczywiście).

Wcięcia to koniecznie tab a nie spacje [na litość!]
No i koniecznie włączcie sobie "trim trailing spaces on save" w edytorze... potem diff pokazuje milion różnic, a to tylko wycięte zbędne spacje z końców linii..

0

Widze, ze ile osob tyle opinii ;)
Poki co pozostalem przy starym stylu, czyli z podkresleniami ;) Natomiast nazwy klas wielka litera dla wyroznienia.

Ja osobiscie w kazdym jezyku stosuje inny styl kodowania. W Delphi, styl pascalowy, w C# - wielblodzi, JavaScript rowniez wielbladzi sie staram ;)

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