60 znaków...
Serwis znalezionych hasełOdnośniki
- Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
- safe_mode_proteced_env_vars = "PATH, LD_LIBRARY_PATH" open_basedir = $a'cuch_znaków Zasięg: PHP_INI_SYSTEM; wartość domyślna: NULL...
- Chociaż trenowałem i trenowałem godzinami, nie przypuszczałem, że dwanaście zaledwie minut walki może trwać tak bardzo długo...
- 44 53 8A 3E D6 C6 96 B3 4E 00 71 03 44 52 26 9C Hendersonville_NC-9...
- Krótko mówiąc, dokonanie aktu agresji w sumie ponad 10 000 osób z różnych krajów twierdzenia tej hipotezy dostarczyły badania powoduje co prawda...
- I'd stuck at my post...
- Na su wa siĂŞ py ta nie: dla cze go masz pÂłaciĂŚ za coĹ, co moÂżesz mieĂŚ za dar mo? Czy Tim O'Reilly po stra daÂł zmysÂły i wy da je coĹ, co ka Âżdy moÂże so bie sam wy dru ko...
- sze chciał i musiał rezygnować z zajęć typu burżuazyjnego...
- Posługując się asystentami dobrze wytrenowanymi w stosowaniu tego systemu kodowania interakcji, Bales i Slater (1955) wykazali, że w spontanicznym przebiegu...
- To change the font style, click Bold or Italic in the Property inspector, or choose a font style (Bold, Italic, Underline, and so on) from the Text > Style submenu...
- Koestler A...
Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
W celu spełnienia tych wymagań oraz zwiększenia czytelności kodu stosuje się łamanie wierszy i dodawanie
odstępów (spacji i pustych wierszy). Łamania wyrażeń dokonuje się w taki sposób, aby ostatnim znakiem
złamanego wiersza był operator.
public static
boolean draw(Graphics gDC,
Color color,
int x, int y,
int width, int height)
{
StreamTokenizer tokens = new StreamTokenizer(
"c:\\cafe" +
"myfile.txt"
);
// ...
}
Konsekwencja
Identyczne konstrukcje języka zawsze wyglądają tak samo.
int arr[];
int[] vec; // niekonsekwentnie
System.out.println();
System.out.print('\n'); // niekonsekwentnie
Nadmiarowość
Nadmiarowość jest dozwolona tylko w celu zwiększenia czytelności programu. Dotyczy to w szczególności:
użycia zbędnego odnośnika this, użycia zbędnych nawiasów oraz użycia zbędnych specyfikatorów.
class Square {
int side;
Square(int base)
{
this.side = base; // zbędne this
// ...
if((a > 0) && (a < 10)) // zbędne nawiasy
System.exit(0);
}
// ...
}
abstract // zbędne abstract
interface Discardable
{
static final int ZERO = 0; // zbędne static i final
// ...
}
Komentarze
182
Komentarz wierszowy jest wyrównany w pionie względem pozostałych takich komentarzy z jego otoczenia.
int x; // xCen
int y; // yCen
Komentarz blokowy zapisuje się od pierwszej kolumny. W wierszach następnych zapisuje się dodatkowy znak
* ( gwiazdka). Zakończenie komentarza zapisuje się w osobnym wierszu. Ogół gwiazdek tworzy linię pionową.
/* Hello
* from
* me
*/
Uwaga: W dalszym opisie istnienie komentarzy nie będzie brane pod uwagę. W tym sensie za ostatni znak
wiersza
int x; // xCen
będzie odtąd uznawany średnik.
Wcię cia
Jeśli pewna konstrukcja składniowa zawiera inną (na przykład definicja klasy zawiera deklarację metody), to
konstrukcję wewnętrzną wcina się względem zewnętrznej.
Wcięcie uzyskuje się przez wstawienie ciągu spacji. Minimalny rozmiar wcięcia: 4 spacje. Wszystkie wcięcia
muszą być równe. Znaku tabulacji nie używa się.
class Greet {
int fun(int a)
{
if(a < 0)
return 0;
return a * a;
}
}
Identyfikatory
Identyfikatory pakietów zaczynają się od małej litery. Identyfikatory typów, stałych i etykiet od dużej.
Identyfikatory pól, zmiennych i procedur od małej.
Zaleca się dobieranie nazw mnemonicznych, na przykład
getV i setV
dla pobrania/zmiany (np. getColor, setColor)
isV
dla badania (np. isEmpty)
toV
dla konwersji (np. toString)
Nazwy jednoliterowe stosuje się tylko w specjalnych przypadkach, np.
b
dla byte
c
dla char
d
dla double
e
dla Exception
f
dla float
i, j, k
dla liczników
l
dla long
o
dla Object
s
dla String
v
dla wartoś ci
183
W identyfikatorach wielosłowowych stosuje się duże litery, a nie znaki podkreślenia. Znaku podkreślenia
używa się tylko w identyfikatorach stałych.
int index;
void getArea();
public anyVeryLongMeaningfulName;
public static final double Pi = 3.14;
final Color COLOR_RED = Color.red;
Separatory
Po każdym przecinku, dwukropku i ś redniku występuje odstęp (wyjątek: instrukcja for). Przed przecinkiem oraz ś rednikiem oraz po nawiasie otwierają cym i przed nawiasem zamykają cym nie stawia się odstępu (wyjątek:
średnik w instrukcji for).
fun(a, fun(a, b), b);
fun ( a , b ); // zbędne odstepy
fun(a, b); // dobrze
Specyfikatory
Specyfikatory klas i interfejsów wymienia się w następującej kolejności: dostę pność (public, protected, private), abstrakcyjność (abstract), ustaloność (final), rodzaj (class, interface).
Specyfikatory procedur wymienia się w następującej kolejności: dostę pność (public, protected, private),
statyczność (static), abstrakcyjność (abstract), rodzimość (native), ustaloność (final), synchroniczność (synchronized), typ (void, int, itp.).
Specyfikatory pól i zmiennych wymienia się w następującej kolejności: dostę pność (public, protected, private), statyczność (static), nietrwałość (transient), ulotność (volatile), ustaloność (final), typ (void, int, itp.).
public abstract
class Input {
protected static void fun();
public abstract synchronized int met(int x);
private static volatile final int var = 12;
// ...
}
Bloki
Klamrę otwierającą ciało klasy albo interfejsu oraz blok zawarty w innej instrukcji (np. w inicjatorze klasy)
umieszcza się po spacji, w tym samym wierszu co nagłówek klasy albo interfesju, albo początkowa fraza
instrukcji. W pozostałych przypadkach klamrę otwierającą umieszcza się w osobnym wierszu (dotyczy to
przede wszystkim klamry otwierającej ciało funkcji).
Klamrę zamykającą blok zawsze umieszcza się w osobnym wierszu.
class Any {
void fun()
{
while(true) {
int i = 0;
{
// ..
}
}
}
}
Definicje klas i interfejsów
184
Słowo kluczowe class i interface umieszcza się od pierwszej kolumny wiersza. Jeśli definicja jest poprzedzona
specyfikatorami, to umieszcza się je od pierwszej kolumny poprzedniego wiersza.