Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ программирования Π½Π° Π‘++. 101 ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈ рСкомСндация». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 57

Автор Π“Π΅Ρ€Π± Π‘Π°Ρ‚Ρ‚Π΅Ρ€

[Martin00] Martin R. C. Abstract Classes and Pure Virtual Functions in Martin R. C. (ed.), More Π‘++ Gems. Cambridge University Press, 2000.

[McConnell93] McConnell S. Code Complete. Microsoft Press, 1993.

[Metrowerks] Metrowerks.

[Meyer00] Meyer B. Object-Oriented Software Construction, 2nd Edition. Prentice Hall, 2000.

[Meyers96] Meyers S. More Effective Π‘++. Addison-Wesley, 1996.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄: ΠœΠ΅ΠΉΠ΅Ρ€Ρ Π‘. НаиболСС эффСктивноС использованиС Π‘++. 35 Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΏΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². β€” М.: Π”ΠœΠš ΠŸΡ€Π΅ΡΡ, 2000.

[Meyers97] Meyers S. Effective Π‘++, 2nd Edition. Addison-Wesley, 1997.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄: ΠœΠ΅ΠΉΠ΅Ρ€Ρ Π‘. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС Π‘++. 50 Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΏΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². β€” М.: Π”ΠœΠš ΠŸΡ€Π΅ΡΡ, 2000.

[Meyers00] Meyers S. How Non-Member Functions Improve Encapsulation. C/C++ Users Journal, 18(2), February 2000.

[Meyers01] Meyers S. Effective STL. Addison-Wesley, 2001.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄: ΠœΠ΅ΠΉΠ΅Ρ€Ρ Π‘. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС STL. β€” БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2002.

[Meyers04] Meyers S. and Alexandrescu A. Π‘++ and the Perils of Double-Checked Locking, Part 1 and …Part 2. Dr. Dobb's Journal, 29(7,8), July and August 2004.

[Milewski01] Milewski B. Π‘++ In Action. Addison-Wesley, 2001.

[Miller56] Miller G. A. The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information. The Psychological Review, 1956, vol. 63.

[MozillaCRFAQ] Frequently Asked Questions About mozilla.org's Code Review Process (Web-ΡƒΠ·Π΅Π» Mozilla).

[Murray93] Murray R. Π‘++ Strategies and Tactics. Addison-Wesley, 1993.

[Musser01] Musser D. R., Derge G. J., and Saini A. STL Tutorial and Reference Guide, 2nd Edition. Addison-Wesley, 2001.

[Parnas02] Parnas D. The Secret History of Information Hiding. Software Pioneers: Contributions To Sofware Engineering, Springer-Verlag, New York, 2002.

[Peters99] Peters T. The Zen of Python. Comp.lang.python, June 1999.

[Piwowarski82] Piwowarski P. A Nesting Level Complexity Measure. ACM SIGPLAN Notices, 9/1982.

[Saks99] Saks D. Thinking Deeply, Thinking Deeper, and Thinking Even Deeper. C/C++ Users Journal, 17(4,5,6), April, May, and June 1999.

[Schmidt01] Schmidt D., Stal M., Rohnert H., Buschmann F. Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects. Wiley, 2001.

[SeamonkeyCR] Seamonkey Code Reviewer's Guide (Web-ΡƒΠ·Π΅Π» Mozilla).

[Sedgewick98] Sedgewick R. Algorithms in Π‘++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching, 3rd Edition. Addison-Wesley, 1998.

[STLport-Debug] Fomitchev B. STLport: Debug Mode (Web-ΡƒΠ·Π΅Π» STLport).

[Stroustrup94] Stroustrup B. The Design and Evolution of Π‘++. Addison-Wesley, 1994.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄: Бтрауструп Π‘. Π”ΠΈΠ·Π°ΠΉΠ½ ΠΈ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΡ языка Π‘++. β€” М.: Π”ΠœΠš ΠŸΡ€Π΅ΡΡ, 2000. [Stroustrup00] Stroustrup Π’. The Π‘++ Programming Language (Special 3rd Edition). Addison-Wesley, 2000.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄: Бтрауструп Π‘. Π―Π·Ρ‹ΠΊ программирования Π‘++. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. β€” М.: Π‘ΠΈΠ½ΠΎΠΌ, 2001.

[Sutter99] Sutter H. ACID Programming. Guru of the Week #61.

[Sutter00] Sutter H. Exceptional Π‘++. Addison-Wesley, 2000.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄: Π‘Π°Ρ‚Ρ‚Π΅Ρ€ Π“. РСшСниС слоТных Π·Π°Π΄Π°Ρ‡ Π½Π° Π‘++. БСрия Π‘++ In-Depth, Ρ‚.4. β€” М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ "Π’ΠΈΠ»ΡŒΡΠΌΡ", 2002.

[Sutter02] Sutter H. More Exceptional Π‘++. Addison-Wesley, 2002.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄: Π‘Π°Ρ‚Ρ‚Π΅Ρ€ Π“. РСшСниС слоТных Π·Π°Π΄Π°Ρ‡ Π½Π° Π‘++. БСрия Π‘++ In-Depth, Ρ‚.4. β€” М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ "Π’ΠΈΠ»ΡŒΡΠΌΡ", 2002.

[Sutter03] Sutter H. Generalizing Observer. C/C++ Users Journal, 21(9), September 2003.

[Sutter04] Sutter H. Exceptional Π‘++ Style. Addison-Wesley, 2004.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄: Π‘Π°Ρ‚Ρ‚Π΅Ρ€ Π“. НовыС слоТныС Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π‘++. β€” М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ "Π’ΠΈΠ»ΡŒΡΠΌΡ" (Π² ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ).

[Sutter04a] Sutter H. Function Types. C/C++ Users Journal, 22(7), July 2004.

[Sutter04b] Sutter H. When and How To Use Exceptions. C/C++ Users Journal, 22(8), August 2004.

[Sutter04c] Sutter H. Just Enough' Thread Safety. C/C++ Users Journal, 22(9), September 2004.

[Sutter04d] Sutter H. How to Provide (or Avoid) Points of Customization in Templates. C/C++ Users Journal, 22(11), November 2004.

[SuttHysl01] Sutter H. and Hyslop J. Hungarian wartHogs. C/C++ Users Journal, 19(11), November 2001.

[SuttHysl02] Sutter H. and Hyslop J. A Midsummer Night's Madness. C/C++ Users Journal, 20(8), August 2002.

[SuttHysl03] Sutter H. and Hyslop J. Sharing Causes Contention. C/C++ Users Journal, 21(4),

April 2003.

[SuttHysl04a] Sutter H. and Hyslop J. Getting Abstractions. C/C++ Users Journal, 22(6), June 2004.

[SuttHysl04b] Sutter H. and Hyslop J. Collecting Shared Objects. C/C++ Users Journal, 22(8), August 2004.

[Taligent94] Taligent's Guide to Designing Programs. Addison-Wesley, 1994.

[Tsai01] Tsai T. and Singh N. Libsafe 2.0: Detection of Format String Vulnerability Exploits. Avaya Labs, March 2001.

[Vandevoorde03] Vandevoorde D. and Josuttis N. Π‘++ Templates. Addison-Wesley, 2003.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄: Π’Π°Π½Π΄Π΅Π²ΡƒΡ€Π΄ Π”., ДТосаттис Н. Π¨Π°Π±Π»ΠΎΠ½Ρ‹ Π‘++. Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. β€” М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ "Π’ΠΈΠ»ΡŒΡΠΌΡ", 2003.

[Webber03] Webber А. Π’. Modern Programming Languages: A Practical Introduction. Franklin, Beedle & Associates. 2003.

РСзюмС ΠΈΠ· Ρ€Π΅Π·ΡŽΠΌΠ΅

Вопросы ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ стратСгии

0. ΠΠ΅ ΠΌΠ΅Π»ΠΎΡ‡ΠΈΡ‚Π΅ΡΡŒ, ΠΈΠ»ΠΈ Π§Ρ‚ΠΎ Π½Π΅ слСдуСт ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

Π‘ΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΡ€Π°Ρ‚ΠΊΠΎ: Π½Π΅ ΠΌΠ΅Π»ΠΎΡ‡ΠΈΡ‚Π΅ΡΡŒ.

1. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π±Π΅Π· Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ ΠΏΡ€ΠΈ максимальном ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ прСдупрСТдСниям компилятора ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ вашим компилятором. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ всС Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ прСдупрСТдСния ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΌ измСнСния ΠΊΠΎΠ΄Π°, Π° Π½Π΅ сниТСния уровня Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.

2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ автоматичСскиС систСмы сборки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

НаТимайтС Π½Π° ΠΎΠ΄Π½Ρƒ (Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ) ΠΊΠ½ΠΎΠΏΠΊΡƒ: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ("Π² ΠΎΠ΄Π½ΠΎ дСйствиС") систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ вСсь ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Π΅Π· Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ систСму контроля вСрсий

Как гласит китайская пословица, ΠΏΠ»ΠΎΡ…ΠΈΠ΅ Ρ‡Π΅Ρ€Π½ΠΈΠ»Π° Π»ΡƒΡ‡ΡˆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ памяти: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ систСмы управлСния вСрсиями. НС оставляйтС Ρ„Π°ΠΉΠ»Ρ‹ Π±Π΅Π· присмотра Π½Π° Π΄ΠΎΠ»Π³ΠΈΠΉ срок. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ ΠΈΡ… всякий Ρ€Π°Π· послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ проходят тСсты Π½Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ внСсСнныС обновлСния Π½Π΅ ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ сборкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

4. ΠžΠ΄Π½Π° Π³ΠΎΠ»ΠΎΠ²Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π° Π΄Π²Π΅ β€” Π»ΡƒΡ‡ΡˆΠ΅

РСгулярно просматривайтС ΠΊΠΎΠ΄ всСй ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. Π§Π΅ΠΌ большС Π³Π»Π°Π· β€” Ρ‚Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ качСство ΠΊΠΎΠ΄Π°. ΠŸΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ ваш ΠΊΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΈΡ… ΠΊΠΎΠ΄ΠΎΠΌ β€” это принСсСт ΠΏΠΎΠ»ΡŒΠ·Ρƒ всСм.

Π‘Ρ‚ΠΈΠ»ΡŒ проСктирования

5. ΠžΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” ΠΎΠ΄Π½Π° Π·Π°Π΄Π°Ρ‡Π°

ΠšΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (пСрСмСнная, класс, функция, пространство ΠΈΠΌΠ΅Π½, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Π‘ ростом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², СстСствСнно, увСличиваСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΈΡ… отвСтствСнности, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ своСго прСдназначСния.

6. Π“Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ, простота ΠΈ ΡΡΠ½ΠΎΡΡ‚ΡŒ

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ быстроты. ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° Π»ΡƒΡ‡ΡˆΠ΅ слоТности. Π―ΡΠ½ΠΎΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ хитроумия. Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ нСнадСТности (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 83 ΠΈ 99).

7. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ

ВсСгда ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌ ростС Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± асимптотичСской слоТности Π±Π΅Π· ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Алгоритмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ прСдсказуСмоС ΠΈ, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ Ρ…ΡƒΠΆΠ΅ Ρ‡Π΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ зависящСС ΠΎΡ‚ количСства ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹. Когда становится Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ оптимизация, Π² особСнности ΠΈΠ·-Π·Π° роста объСмов Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ слСдуСт ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ O-ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π° Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ микрооптимизациями Ρ‚ΠΈΠΏΠ° экономии Π½Π° ΠΎΠ΄Π½ΠΎΠΌ слоТСнии.

8. ΠΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ

Как гласит пословица, Π½Π΅ подгоняйтС ΡΠΊΠ°Ρ‡ΡƒΡ‰ΡƒΡŽ лошадь. ΠŸΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ оптимизация Π½Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Π° ΠΈ быстро Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΡƒ. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ: Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для экспСртов): Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС. БСмь Ρ€Π°Π· ΠΎΡ‚ΠΌΠ΅Ρ€ΡŒ, ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉ.

9. ΠΠ΅ пСссимизируйтС ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ

Π’ΠΎ, Ρ‡Ρ‚ΠΎ просто для вас, β€” просто ΠΈ для ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ€Π°Π²Π½Ρ‹Ρ… условиях, Π² особСнности β€” слоТности ΠΈ удобочитаСмости ΠΊΠΎΠ΄Π°, ряд эффСктивных шаблонов проСктирования ΠΈ ΠΈΠ΄ΠΈΠΎΠΌ кодирования Π΄ΠΎΠ»ΠΆΠ½Ρ‹ СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ "ΡΡ‚Π΅ΠΊΠ°Ρ‚ΡŒ с ΠΊΠΎΠ½Ρ‡ΠΈΠΊΠΎΠ² Π²Π°ΡˆΠΈΡ… ΠΏΠ°Π»ΡŒΡ†Π΅Π²" ΠΈ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ слоТнСС Π² написании, Ρ‡Π΅ΠΌ ΠΈΡ… пСссимизированныС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹. Π­Ρ‚ΠΎ Π½Π΅ прСТдСврСмСнная оптимизация, Π° ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ излишнСй пСссимизации.

10. ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅

БовмСстноС использованиС Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ споры ΠΈ Ρ€Π°Π·Π΄ΠΎΡ€Ρ‹. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ совмСстного использования Π΄Π°Π½Π½Ρ‹Ρ…, Π² особСнности Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. БовмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΡΠΈΠ»ΠΈΠ²Π°ΡŽΡ‚ ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сниТСнию сопровоТдаСмости, Π° Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

11. Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

НС выпускайтС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ.

12. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… вычислСний

Если вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈΠ»ΠΈ процСссов, слСдуСт ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π³Π΄Π΅ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ 10), ΠΈ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΌΠΈΡΡ.

13. Π Π΅ΡΡƒΡ€ΡΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎ Π²Π»Π°Π΄Π΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

НС Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ инструмСнты. Идиома Π‘++ "Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ рСсурса Π΅ΡΡ‚ΡŒ инициализация" (resource acquisition is initialization β€” RAII) прСдставляСт собой ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСсурсами. RAII позволяСт компилятору автоматичСски ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. ΠŸΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ рСсурса ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ-Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρƒ. Никогда Π½Π΅ выдСляйтС нСсколько рСсурсов Π² ΠΎΠ΄Π½ΠΎΠΉ инструкции.