(ReactOS Wiki) Руководство по программированию

ReactOS Team, “(ReactOS Wiki) Programming Guidelines”, public translation into Russian from English More about this translation.

See also 73 similar translations

Translate into another language.

Participants

evilslon2091 points
llamerr573 points
RedFox182 points
And others...
Join Translated.by to translate! If you already have a Translated.by account, please sign in.
If you do not want to register an account, you can sign in with OpenID.
Pages: ← previous Ctrl next next untranslated
1 2 3 4 5 6 7 8

(ReactOS Wiki) Programming Guidelines

(ReactOS Wiki) Руководство по программированию

History of edits (Latest: evilslon 2 years, 1 month ago) §

__NOTOC__

__NOTOC__

History of edits (Latest: evilslon 2 years, 1 month ago) §

See http://www.microsoft.com/resources/practices/ for Microsoft's take on best coding practices.

Перейдя на http://www.microsoft.com/resources/practices/ вы можете просмотреть лучшие практики программирования от Microsoft.

History of edits (Latest: evilslon 2 years, 1 month ago) §

Here are some hints to write good code,

Здесь приведены подсказки,

History of edits (Latest: evilslon 2 years, 1 month ago) §

originally collected in the context of the ReactOS project.

изначально собранные в рамках проекта ReactOS и позволяющие написать хороший код.

History of edits (Latest: Yaraslau 2 years, 1 month ago) §

For advice on writing secure code please see [[Secure_Programming]].

Для получения консультации по написанию безопасного кода см. [[Безопасное_Программирование]].

History of edits (Latest: evilslon 2 years, 1 month ago) §

'''Always remember these guidelines:'''

'''Всегда помните следующие требования:'''

History of edits (Latest: evilslon 2 years, 1 month ago) §

== It's more important to be correct than to be fast ==

== Гораздо важнее быть правильным, чем быстрым ==

History of edits (Latest: evilslon 2 years, 1 month ago) §

Premature optimization is the root of all evil.

Преждевременная оптимизация есть корень всех зол.

History of edits (Latest: evilslon 2 years, 1 month ago) §

With respect to writing time and memory efficient programs, I would put forward that one should not concern themselves with execution speed while building code. Such concerns will be mostly a waste of time. Build the program to be robust and easily maintainable, then if it exhibits performance that is not acceptable, profile it and improve only those sections that most need to be optimized. -RexJolliff

Со всем уважением к эффективно использующим память и быстро написанным программам, в первую очередь хотелось бы сказать, что не нужно стараться достичь максимальной скорости исполнения кода при его написании. Эти вопросы, в основном, станут пустой тратой времени. Создавайте программу, которая будет надежной и легко обслуживаемой, а уже потом, если её производительность будет неприемлема, просмотрите её и улучшите только те разделы, которые наиболее всего требуют оптимизации. -RexJolliff

History of edits (Latest: evilslon 2 years, 1 month ago) §

== Small and smart solutions to solve a problem aren't a shame ==

== Пусть вас не стыдит небольшое и умное решение проблемы ==

History of edits (Latest: evilslon 2 years, 1 month ago) §

Make your code small and smart while preserving its readability and understandability. Follow the guide line "less code - less bugs - more readable - easier to review". Think twice about your solution. Don't misunderstand this rule as optimization rule; maybe it affects the speed and size of the resulting application/driver/library, but that is not the (primary) intended reason. If the smart solution needs more changes, try to adapt as much as possible to make it smarter and more readable. Your credit is not derived from the count of lines you wrote.

Сделайте свой код меньше и умнее при сохранении его читаемости и понятности. Следуйте указаниям инструкции "меньше кода - меньше ошибок - более удобно для чтения - проще обозрение". Подумайте дважды над своим решением. Не принимайте это утверждение как правило оптимизации; возможно, это и влияет на скорость и размер результирующего приложения/драйвера/библиотеки, но это не должно быть (основной) целью. Если для умного решения необходимо больше изменений, постарайтесь адаптировать их как можно больше, чтобы сделать решение умнее и читабельнее. Ваш кредит не зависит от количества написанных вами строк кода.

History of edits (Latest: evilslon 2 years, 1 month ago) §

== Write thread safe code ==

== Создавайте потокобезопасный код ==

History of edits (Latest: evilslon 2 years, 1 month ago) §

Especially be aware of this if you write a library; your library may be used by an MT-application. This applies anyway to the kernel, since the kernel is a library which has to be thread-safe per se.

Будьте особенно внимательны и при написании библиотеки; ваша библиотека может быть использована мультипоточным (MT) приложением. В любом случае это относится к ядру, поскольку ядро является библиотекой, которая должна быть поточно-безопасной.

History of edits (Latest: evilslon 2 years, 1 month ago) §

What differentiates thread safe code from thread unsafe code is the use of global variables. Thread safe code avoids nearly all global variables. This includes also local static variables and class variables. One has to decide carefully whether a variable or data structure is local, thread-global or process-global. Try to eliminate global variables. If this isn't possible and you need a thread-global variable then thread local storage (TLS) is the right thing. If you need a process global variable, then the right thing is a classic global variable. However don't forget to declare it with the volatile modifier. If you don't declare it as volatile, it may happen that two threads hold a copy of the variable in their contexts. So data consistency may not be guaranteed.

Отличием потокобезопасного кода от небезопасного является использование глобальных переменных. Потокобезопасный код избегает использования практически всех глобальных переменных, включающих в себя также локальные статические переменные и переменные класса. Необходимо решить, какая переменная или структура данных будут локальными, глобальными в рамках потока или глобальными в рамках процесса. Постарайтесь удалить глобальные переменные. Если это невозможно, и вам необходима переменная, глобальная для всего потока, то правильным решением станет использование локальной памяти потока (TLS). Если вам нужна переменная, глобальная для процесса, правильным решением станет использование классической глобальной переменной. Тем не менее, не забудьте объявить её, как изменяемую. Если вы не объявите её как изменяемую, может случиться так, что два потока будут держать копию переменной в своём контексте. Поэтому согласованность данных не может быть гарантирована.

History of edits (Latest: evilslon 2 years ago) §
Pages: ← previous Ctrl next next untranslated
1 2 3 4 5 6 7 8

License: FDL