Coding Standards#
pgAdminは、複数のテクノロジーと複数の言語を使用しており、それぞれに独自のコーディング標準があります。
一般#
すべての言語で、インデントは4つのスペースで作成し、過度に長い行は、小さなディスプレイで読めるように、必要に応じて折り返す必要があります。多くの場所で80文字が使用されますが、これは非常に無駄であるため、必要な最大サイズではありません。モダンなディスプレイ)。通常、行は120文字を超えてはなりません。
その目的またはコード自分自身の簡単なレビューからは明らかでない場合は、それがどのように動作するかを説明するために、必要に応じてすべてのコードにコメントを含める必要があります。
CSS3#
CSS3は、アプリケーション全体のスタイルとレイアウトに使用されます。
ほとんどのカスタムスタイルは、フックを介してロードしているモジュールに含まれる静的スタイルシートをアドバタイズする場合がある個々のモジュールから来ています。
スタイルオーバーライドたとえば、ルックアンドフィールを変更することは、通常、アプリケーションのメイン静的ファイルディレクトリの 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準拠である必要があります。
HTML 5#
HTML 5は、アプリケーション全体のページ構造に使用され、ほとんどの場合、FlaskのJinja2テンプレートエンジンによってテンプレートからレンダリングされます。
すべてのHTMLはHTML 5に準拠している必要があります。
JavaScript#
クライアントサイドのコードは、ReactJSとさまざまなプラグインを使用して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が使用されます。すべてのコードはPython 2.7と互換性があり、 PEP 8 で定義された公式のPythonコーディング標準に従いながら、PyDocコメントを含める必要があります。ファンクションの例と必要なファイルヘッダーを以下に示します。
##########################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2025, 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