Qt Quick Best Practices/bg: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
(Use LangSwitch rather than hand-coded)
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
[[Category:Advice]]
[[Category:Developing_with_Qt::Qt Quick]]
[[Category:Developing_with_Qt::Qt Quick]]
 
{{LangSwitch}}
[toc align_right="yes" depth="2"]
 
'''Български''' [[Qt_Quick_Best_Practices|English]]


Тази статия съдържа списък от най-добрите практики, а също и съвети от разработчиците, какво '''ДА''' и какво '''ДА НЕ''' правите, докато създавате приложения с Qt Quick. Моля, добавяйте вашите препоръки и помогнете на тази страница да расте …
Тази статия съдържа списък от най-добрите практики, а също и съвети от разработчиците, какво '''ДА''' и какво '''ДА НЕ''' правите, докато създавате приложения с Qt Quick. Моля, добавяйте вашите препоръки и помогнете на тази страница да расте …
Line 11: Line 10:
== Форматиране ==
== Форматиране ==


<code><br />/**<br /> * Този компонент предоставя …<br /> '''/
<code>
<br /> Rectangle {<br /> id: example
/**
<br /> // размер независим от височината на екрана<br /> width: 100<br /> height: 100<br /> }<br /></code>
* Този компонент предоставя …
<br />''' Използвайте 4 места за идентация<br />* Слагайте { на същият ред като елемента/оператора, отделена с 1 празно място<br />* Използвайте празни редове интелигентно за да отделяте блоковете код<br />* Използвайте един празен ред преди многоредов коментар - така става по-лесен за четене
*/
 
Rectangle {
id: example
 
// размер независим от височината на екрана
width: 100
height: 100
}
</code>
 
''' Използвайте 4 места за идентация
* Слагайте { на същият ред като елемента/оператора, отделена с 1 празно място
* Използвайте празни редове интелигентно за да отделяте блоковете код
* Използвайте един празен ред преди многоредов коментар - така става по-лесен за четене


== Основни съвети ==
== Основни съвети ==
Line 24: Line 37:
* Ако групирате няколко свойства на един ред, групирайте ги по смисъл (например. ''x, y'' е логично и смислено, докато ''x, color'' - няма)
* Ако групирате няколко свойства на един ред, групирайте ги по смисъл (например. ''x, y'' е логично и смислено, докато ''x, color'' - няма)
* Използвайте групирани от свойства, където срещнете логически групи от свойства (например ''font'')
* Използвайте групирани от свойства, където срещнете логически групи от свойства (например ''font'')
* Имената на свойствата трябва да започват с малка буква (с изключение на &quot;Прикрепените свойства&amp;quot;:http://doc.qt.nokia.com/4.7-snapshot/qdeclarativeintroduction.html#attached-properties)
* Имената на свойствата трябва да започват с малка буква (с изключение на [http://doc.qt.nokia.com/4.7-snapshot/qdeclarativeintroduction.html#attached-properties Прикрепените свойства])
* Използвайте квадратни скоби, дори когато присвоявате само една стойност на списък - така после по-лесно се разбира, че това е списък
* Използвайте квадратни скоби, дори когато присвоявате само една стойност на списък - така после по-лесно се разбира, че това е списък
* Дефинирайте обработката на сигнали с префикс &quot;on&amp;quot; (например onHover)
* Дефинирайте обработката на сигнали с префикс "on" (например onHover)
* Избягвайте коментари на в края на реда - човек лесно може да ги пропуснете
* Избягвайте коментари на в края на реда - човек лесно може да ги пропуснете
* Избягвайте претрупването на кода с коментари, именувайте променливите си със значещи имена
* Избягвайте претрупването на кода с коментари, именувайте променливите си със значещи имена
Line 50: Line 63:
* Излагайте текущото състояние и промените в него като свойства вместо като функции - това води до по-ясна интеграция с обвързването на свойствата в QML
* Излагайте текущото състояние и промените в него като свойства вместо като функции - това води до по-ясна интеграция с обвързването на свойствата в QML
* Дръжте C++ имплементацията независима от QML интерфейса и от обектното дърво в QML
* Дръжте C++ имплементацията независима от QML интерфейса и от обектното дърво в QML
* Избягвайте директно да манипулирате обектното дърво в QML през C+''. QML елементите трябва да &quot;дърпат&amp;quot; данни от C, а не C''+ да се мъчи да вкара данни в QML.
* Избягвайте директно да манипулирате обектното дърво в QML през C+''. QML елементите трябва да "дърпат" данни от C, а не C''+ да се мъчи да вкара данни в QML.
* Използвайте OpenGL за смесване, преоразмеряване или завъртане. (''-opengl'' като опция на ''qmlviewer'' или QGLWidget в комбинация с<br />QDeclarativeView)
* Използвайте OpenGL за смесване, преоразмеряване или завъртане. (''-opengl'' като опция на ''qmlviewer'' или QGLWidget в комбинация с
* Стартирайте приложението на цял екран вместо максимизирано, за да избегнете натоварване при композирането. (_<s>fullscreen_ като опция на ''qmlviewer'' или използвайте showFullscreen() вместо show())  
QDeclarativeView)
<br />h2. Отворено за дискусия</s> добавете вашите коментари тук
* Стартирайте приложението на цял екран вместо максимизирано, за да избегнете натоварване при композирането. (_-fullscreen_ като опция на ''qmlviewer'' или използвайте showFullscreen() вместо show())  


* &quot;Подразбиращи се свойства&amp;quot;:http://doc.qt.nokia.com/4.7-snapshot/qdeclarativeintroduction.html#default-properties: Ако свойство е декларирано като подразбиращо се, запазената дума ''property'' може да се изпусне. '''Това добра идея ли е?'''
== Отворено за дискусия- добавете вашите коментари тук ==
* [http://doc.qt.nokia.com/4.7-snapshot/qdeclarativeintroduction.html#default-properties Подразбиращи се свойства]: Ако свойство е декларирано като подразбиращо се, запазената дума ''property'' може да се изпусне. '''Това добра идея ли е?'''


* Използвайте коментарите на края на реда само за да коментирате край на блок. '''Това добър стил на писане ли е?'''
* Използвайте коментарите на края на реда само за да коментирате край на блок. '''Това добър стил на писане ли е?'''
Line 61: Line 75:
* Ако отделно свойство трябва да се документира, коментар на края на реда е допустим
* Ако отделно свойство трябва да се документира, коментар на края на реда е допустим


''Основните конвенции при писането на код можете да намерите'' &quot;тук&amp;quot;:http://doc.qt.nokia.com/qml-coding-conventions.html
''Основните конвенции при писането на код можете да намерите'' [http://doc.qt.nokia.com/qml-coding-conventions.html тук]


== Вижте също ==
== Вижте също ==

Latest revision as of 09:00, 11 July 2019

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

Тази статия съдържа списък от най-добрите практики, а също и съвети от разработчиците, какво ДА и какво ДА НЕ правите, докато създавате приложения с 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)
  • Имената на свойствата трябва да започват с малка буква (с изключение на Прикрепените свойства)
  • Използвайте квадратни скоби, дори когато присвоявате само една стойност на списък - така после по-лесно се разбира, че това е списък
  • Дефинирайте обработката на сигнали с префикс "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())

Отворено за дискусия- добавете вашите коментари тук

  • Подразбиращи се свойства: Ако свойство е декларирано като подразбиращо се, запазената дума property може да се изпусне. Това добра идея ли е?
  • Използвайте коментарите на края на реда само за да коментирате край на блок. Това добър стил на писане ли е?
  • Ако отделно свойство трябва да се документира, коментар на края на реда е допустим

Основните конвенции при писането на код можете да намерите тук

Вижте също