Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.
Qt Quick Best Practices/bg: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[Category:Developing_with_Qt::Qt Quick]] | [[Category:Developing_with_Qt::Qt Quick]] | ||
[toc align_right= | [toc align_right="yes" depth="2"] | ||
'''Български''' [[Qt_Quick_Best_Practices|English]] | '''Български''' [[Qt_Quick_Best_Practices|English]] | ||
Line 11: | Line 11: | ||
== Форматиране == | == Форматиране == | ||
<code> | <code> | ||
/** | |||
* Този компонент предоставя … | |||
*/ | |||
Rectangle { | |||
id: example | |||
// размер независим от височината на екрана | |||
width: 100 | |||
height: 100 | |||
} | |||
</code> | |||
''' Използвайте 4 места за идентация | |||
* Слагайте { на същият ред като елемента/оператора, отделена с 1 празно място | |||
* Използвайте празни редове интелигентно за да отделяте блоковете код | |||
* Използвайте един празен ред преди многоредов коментар - така става по-лесен за четене | |||
== Основни съвети == | == Основни съвети == | ||
Line 24: | Line 38: | ||
* Ако групирате няколко свойства на един ред, групирайте ги по смисъл (например. ''x, y'' е логично и смислено, докато ''x, color'' - няма) | * Ако групирате няколко свойства на един ред, групирайте ги по смисъл (например. ''x, y'' е логично и смислено, докато ''x, color'' - няма) | ||
* Използвайте групирани от свойства, където срещнете логически групи от свойства (например ''font'') | * Използвайте групирани от свойства, където срещнете логически групи от свойства (например ''font'') | ||
* Имената на свойствата трябва да започват с малка буква (с изключение на | * Имената на свойствата трябва да започват с малка буква (с изключение на "Прикрепените свойства":http://doc.qt.nokia.com/4.7-snapshot/qdeclarativeintroduction.html#attached-properties) | ||
* Използвайте квадратни скоби, дори когато присвоявате само една стойност на списък - така после по-лесно се разбира, че това е списък | * Използвайте квадратни скоби, дори когато присвоявате само една стойност на списък - така после по-лесно се разбира, че това е списък | ||
* Дефинирайте обработката на сигнали с префикс | * Дефинирайте обработката на сигнали с префикс "on" (например onHover) | ||
* Избягвайте коментари на в края на реда - човек лесно може да ги пропуснете | * Избягвайте коментари на в края на реда - човек лесно може да ги пропуснете | ||
* Избягвайте претрупването на кода с коментари, именувайте променливите си със значещи имена | * Избягвайте претрупването на кода с коментари, именувайте променливите си със значещи имена | ||
Line 50: | Line 64: | ||
* Излагайте текущото състояние и промените в него като свойства вместо като функции - това води до по-ясна интеграция с обвързването на свойствата в QML | * Излагайте текущото състояние и промените в него като свойства вместо като функции - това води до по-ясна интеграция с обвързването на свойствата в QML | ||
* Дръжте C++ имплементацията независима от QML интерфейса и от обектното дърво в QML | * Дръжте C++ имплементацията независима от QML интерфейса и от обектното дърво в QML | ||
* Избягвайте директно да манипулирате обектното дърво в QML през C+''. QML елементите трябва да | * Избягвайте директно да манипулирате обектното дърво в QML през C+''. QML елементите трябва да "дърпат" данни от C, а не C''+ да се мъчи да вкара данни в QML. | ||
* Използвайте OpenGL за смесване, преоразмеряване или завъртане. (''-opengl'' като опция на ''qmlviewer'' или QGLWidget в комбинация с | * Използвайте OpenGL за смесване, преоразмеряване или завъртане. (''-opengl'' като опция на ''qmlviewer'' или QGLWidget в комбинация с | ||
* Стартирайте приложението на цял екран вместо максимизирано, за да избегнете натоварване при композирането. (_ | QDeclarativeView) | ||
* Стартирайте приложението на цял екран вместо максимизирано, за да избегнете натоварване при композирането. (_-fullscreen_ като опция на ''qmlviewer'' или използвайте showFullscreen() вместо show()) | |||
h2. Отворено за дискусия- добавете вашите коментари тук | |||
* | * "Подразбиращи се свойства":http://doc.qt.nokia.com/4.7-snapshot/qdeclarativeintroduction.html#default-properties: Ако свойство е декларирано като подразбиращо се, запазената дума ''property'' може да се изпусне. '''Това добра идея ли е?''' | ||
* Използвайте коментарите на края на реда само за да коментирате край на блок. '''Това добър стил на писане ли е?''' | * Използвайте коментарите на края на реда само за да коментирате край на блок. '''Това добър стил на писане ли е?''' | ||
Line 61: | Line 77: | ||
* Ако отделно свойство трябва да се документира, коментар на края на реда е допустим | * Ако отделно свойство трябва да се документира, коментар на края на реда е допустим | ||
''Основните конвенции при писането на код можете да намерите'' | ''Основните конвенции при писането на код можете да намерите'' "тук":http://doc.qt.nokia.com/qml-coding-conventions.html | ||
== Вижте също == | == Вижте също == |
Revision as of 13:05, 25 February 2015
[toc align_right="yes" depth="2"]
Български English
Тази статия съдържа списък от най-добрите практики, а също и съвети от разработчиците, какво ДА и какво ДА НЕ правите, докато създавате приложения с Qt Quick. Моля, добавяйте вашите препоръки и помогнете на тази страница да расте …
Най-добри практики в Qt Quick
Форматиране
/**
* Този компонент предоставя …
*/
Rectangle {
id: example
// размер независим от височината на екрана
width: 100
height: 100
}
Използвайте 4 места за идентация
- Слагайте { на същият ред като елемента/оператора, отделена с 1 празно място
- Използвайте празни редове интелигентно за да отделяте блоковете код
- Използвайте един празен ред преди многоредов коментар - така става по-лесен за четене
Основни съвети
- От Qt 4.7.1 използвайте именното пространство QtQuick, import QtQuick 1.0 - дава възможност за обратна съвместимост
- Името на .qml файла трябва да започва с главна буква
- Използвайте property alias и избягвайте дублирането свойства в компонента - използва се по-малко памет
- Използвайте всяко свойство на отделен ред - помага за четимостта на кода
- Ако групирате няколко свойства на един ред, групирайте ги по смисъл (например. x, y е логично и смислено, докато x, color - няма)
- Използвайте групирани от свойства, където срещнете логически групи от свойства (например font)
- Имената на свойствата трябва да започват с малка буква (с изключение на "Прикрепените свойства":http://doc.qt.nokia.com/4.7-snapshot/qdeclarativeintroduction.html#attached-properties)
- Използвайте квадратни скоби, дори когато присвоявате само една стойност на списък - така после по-лесно се разбира, че това е списък
- Дефинирайте обработката на сигнали с префикс "on" (например onHover)
- Избягвайте коментари на в края на реда - човек лесно може да ги пропуснете
- Избягвайте претрупването на кода с коментари, именувайте променливите си със значещи имена
Задължителни изисквания към компонентите
- Всеки .qml файл трябва да има само един компонент на най-горно ниво
- Всеки .qml файл трябва да има поне един import
- Името на компонента трябва да съвпада с името на .qml файла
- Идентификатора на компонента трябва да е уникален за .qml файла
- Идентификатора на компонента не трябва да бъде в кавички
- Идентификатора на компонента трябва да започва с малка буква или долна черта
- Идентификатора на компонента не трябва да съдържа символи различни от букви, цифри долна черта
- Специфицирайте свойство и стойност с property: value
- Множество свойства на един ред се отделят със точка и запетая
Добри практики
- Избягвайте закодираните с константи размери и позиции, използвайте автоматичното позициониране интелигентно
- Използвайте QML за интерфейса и оставете на Qt/C++ да се занимава с изчисленията като бизнес логика и модели с данни
- Опитите да направите всичко с JavaScript ще доведе то проблеми със производителността, използвайте Qt C++
- Използвайте JavaScript колкото е възможно по-пестеливо
- Излагайте текущото състояние и промените в него като свойства вместо като функции - това води до по-ясна интеграция с обвързването на свойствата в QML
- Дръжте C++ имплементацията независима от QML интерфейса и от обектното дърво в QML
- Избягвайте директно да манипулирате обектното дърво в QML през C+. QML елементите трябва да "дърпат" данни от C, а не C+ да се мъчи да вкара данни в QML.
- Използвайте OpenGL за смесване, преоразмеряване или завъртане. (-opengl като опция на qmlviewer или QGLWidget в комбинация с
QDeclarativeView)
- Стартирайте приложението на цял екран вместо максимизирано, за да избегнете натоварване при композирането. (_-fullscreen_ като опция на qmlviewer или използвайте showFullscreen() вместо show())
h2. Отворено за дискусия- добавете вашите коментари тук
- "Подразбиращи се свойства":http://doc.qt.nokia.com/4.7-snapshot/qdeclarativeintroduction.html#default-properties: Ако свойство е декларирано като подразбиращо се, запазената дума property може да се изпусне. Това добра идея ли е?
- Използвайте коментарите на края на реда само за да коментирате край на блок. Това добър стил на писане ли е?
- Ако отделно свойство трябва да се документира, коментар на края на реда е допустим
Основните конвенции при писането на код можете да намерите "тук":http://doc.qt.nokia.com/qml-coding-conventions.html