Coding Standards¶
pgAdminは複数のテクノロジーと複数の言語を使用しており、それぞれに独自のコーディング標準があります。
全般¶
すべての言語で、インデントは4つのスペースで作成し、必要に応じて過度に長い行を折り返して、小さなディスプレイで読めるようにします(多くの場所で80文字が使用されていますが、これは必要な最大サイズではありません現代のディスプレイ)。通常、行は120文字以下にする必要があります。
コード自分自身の簡単なレビューから明らかではない場合、その目的や動作を説明するために、コメントをすべてのコードに含める必要があります。
CSS3¶
CSS3は、アプリケーション全体のスタイルとレイアウトに使用されます。そのプロセスを支援するためにBootstrapフレームワークが広範囲に使用されていますが、追加のスタイルを時々作成する必要があります。
ほとんどのカスタムスタイリングは、フックを介してロードするモジュールに含めるように静的スタイルシートをアドバタイズする個々のモジュールから来ます。
スタイルのオーバーライド(たとえば、Bootstrapのルックアンドフィールを変更する)は、通常、アプリケーションのメインの静的ファイルディレクトリにある overrides.css ファイルにあります。
スタイル設定は、常に外部スタイルシートを介してHTMLにインラインで適用しないでください。スタイルの使用法または目的を説明するコメントを適切に含める必要があります。
スタイルは、1行に1つずつ明確に指定する必要があります。例:
/* iFrames should have no border */
iframe {
border-width: 0;
}
/* Ensure the codemirror editor displays full height gutters when resized */
.CodeMirror, .CodeMirror-gutters {
height: 100% !important;
}
すべてのスタイルシートはCSS3に準拠している必要があります。
HTML5¶
HTML5はアプリケーション全体のページ構造に使用され、ほとんどの場合、FlaskのJinja2テンプレートエンジンによってテンプレートからレンダリングされます。
すべてのHTMLはHTML5に準拠している必要があります。
Javascript¶
クライアント側のコードは、jQueryとさまざまなプラグインを使用してJavascriptで記述されます。コードの多くは静的ファイルからレンダリングされますが、Jinja2を使用してテンプレートからレンダリングされるコード(多くの場合、ユーザー設定をインジェクトする)またはモジュールフックからその場で構築されるコードもあります。
典型的なJavascript関数は次のようにフォーマットされます(これはテンプレートからの抜粋です)。
// Delete a server group
function delete_server_group(item) {
alertify.confirm(
'Delete server group?',
'Are you sure you wish to delete the server group "{0}"?'.replace('{0}', tree.getLabel(item)),
function() {
var id = tree.getId(item)
$.post("{{ url_for('NODE-server-group.delete') }}", { id: id })
.done(function(data) {
if (data.success == 0) {
report_error(data.errormsg, data.info);
} else {
var next = tree.next(item);
var prev = tree.prev(item);
tree.remove(item);
if (next.length) {
tree.select(next);
} else if (prev.length) {
tree.select(prev);
}
}
}
)
},
null
)
}
アンダースコア文字を使用してすべての小文字の単語を区切り、説明的な関数名と、短いが説明的な小文字の変数名を使用していることに注意してください。
注釈
バージョン3.0以降、新しいコードまたはリファクタリングされたコードは、ES6の機能と規則を使用して記述する必要があります。
パイソン¶
バックエンドのWebサーバーにはPythonを使用しています。すべてのコードはPython2.7と互換性があり、 PEP 8 で定義された公式のPythonコーディング標準に従っている必要があります。必要なファイルヘッダーとともに関数の例を以下に示します。
##########################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2023, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
##########################################################################
"""Integration hooks for server groups."""
from flask import render_template, url_for
from flask.ext.security import current_user
from pgadmin.settings.settings_model import db, ServerGroup
def get_nodes():
"""Return a JSON document listing the server groups for the user"""
groups = ServerGroup.query.filter_by(user_id=current_user.id)
value = ''
for group in groups:
value += '{"id":%d,"label":"%s","icon":"icon-server-group","inode":true},' \
% (group.id, group.name)
value = value[:-1]
return value