Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Привычки & Навыки & Ракурс эффективного программирования

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: В этой теме, я хотел бы разобрать вопрос, о привычках и навыках, самых доблестных программистах, что нужно делать, и что не нужно; как-то так...
Medallion
Отправлено: 18 Мая, 2012 - 23:08:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


Помог: 7 раз(а)




Здравствуйте программисты и другие воины это доблестного форума.
Суть вопроса такова: Расскажите про ваши подвиги, против лени и прочего кощунства,
о том, какие навыки вы приобрели, что посоветуете для новеньких с вопросом:
А что это, а как это делать?! Или что нужно знать, чтобы повторять ошибки, именно повторять, ведь программист, если не видит ошибку, он ведь быстро, не разберется, что где и как.
Ваши советы, наработки, и как вы докатились до такой жизни)

Начну с себя, ламера и лентяя. А вы судите, что хорошо, а что плохо.
Поехали...


1. Форматирование кода
Первые азы, при изучении HTML; да не буду, не нужно, и так мне понятно.
Чуть далее: Чёс затылка, с вытаращенными глазами.

При изучении CSS. Хорошо, это подвинуть, нажать TAB, здесь пробел,
очень хорошо, О как красиво.

При изучении PHP. Фигурную скобку здесь, фигурную скобку там, о бл..ь,
откуда третья взялась?!

И теперь немного кода:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <!--HTML-->
  3. <!DOCTYPE HTML>
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  7. <title>Главная</title>
  8. </head>
  9.  
  10. <body>
  11.         <div id="wrapper">
  12.                
  13.                 <div id="header">
  14.                        
  15.                         <div id="logo">
  16.                                 <a href="/"><img src="img/fon.png" width="50" height="50"></a>
  17.                         </div><!--logo-->
  18.                        
  19.                         <div id="title">
  20.                                 <h1>Название сайта</h1>
  21.                         </div><!--title-->
  22.                        
  23.                         <div id="g_menu">
  24.                                 <ul>
  25.                                         <li>Главная</li>
  26.                                         <li>Новости</li>
  27.                                         <li>Обратная связь</li>
  28.                                 </ul>
  29.                         </div><!--g_menu-->
  30.                 </div><!--header-->
  31.                
  32.                 <div id="content">
  33.                
  34.                         <div id="left_bar">
  35.                                 <ul>
  36.                                         <li>Главная</li>
  37.                                         <li>Новости</li>
  38.                                         <li>Обратная связь</li>
  39.                                 </ul>
  40.                         </div><!--left_bar-->
  41.                        
  42.                         <div id="centr_bar">
  43.                                 <h2>Первое меню</h2>
  44.                                 <p>Контент</p>
  45.                         </div><!--centr_bar-->
  46.                        
  47.                         <div id="right_bar">
  48.                                 <ul>
  49.                                         <li>Главная</li>
  50.                                         <li>Новости</li>
  51.                                         <li>Обратная связь</li>
  52.                                 </ul>
  53.                         </div><!--right_bar-->
  54.                 </div><!--content-->
  55.                
  56.                 <div id="footer">
  57.                         Все права защищены &copy;test.ua
  58.                 </div><!--footer-->
  59.         </div><!--wrapper-->
  60. </body>
  61. </html>
  62.  


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

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. body {
  3.         background: #eee;
  4. }
  5.  
  6. /*Javascript*/
  7. while(i <= 50) {
  8.         document.write(i + '<br>');
  9.         i++; // увеличение счетчика на 1
  10. }
  11.  
  12. if(a == 1) {
  13.         document.wtite('Работает');
  14. }
  15.  
  16. /*PHP*/
  17. while($i <= 50) {
  18.         echo $i.'<br>';
  19.         i++; // увеличение счетчика на 1
  20. }
  21.  
  22. class New {
  23.        
  24.         function __construct() {
  25.         }
  26.        
  27.         function __destruct() {
  28.         }
  29. }
  30.  

Как из примера выше видно, я форматирую фигурные скобки { }, везде одинаково, что удобно и привычно.

А не так, как раньше
if(a == 1)
{
document.wtite('Работает');
}

Бывает конечно, что if проверку пишу в одну строчку, вместе с фигурными скобками, если код проверки и действий слишком мал. Например.
if(a == 1) {document.wtite('Работает');}

CSS
Есть такая привычка ставить после определения правила пробел.

PHP & Javascript
Также привычка ставить, после запятой пробел. В SQL-запросе, в массивах и т.п.

Наглядно отделять код, например:
$myrow_data = array(
'otp' => 'Пошивай',
'ves' => '15кг',
'obiem' => '0.09',
'mesta' => '38'
);

Тоесть, каждая строчка, индекс массива и значение.

Например, SQL-запрос

$sql = "INSERT INTO $table
(id, title, main)
VALUES
('$id', '$title', '$main')";

Ладно, хватит. Поехали далее...

2. Комментирование кода.
Очень важный аспект в программировании, я считаю.
Изначально при изучении любого языка, комментировать код, нужно настолько,
чтобы понимать, что делает эта строка, что эта и т.д.
Далее...
Комментировать, нужно по-блочно. Этот код, выводит горизонтальное меню,
этот блок выводит список фирм, и так далее. Тоесть, при прочтении комментария,
явно становится понятно, что этот код делает.
И третий вариант, комментировать нужно настолько, насколько это должно быть
понятным тебе и другим программистам, коддерам.

Примеры комментариев)
<!--HTML--> однострочный
/*CSS*/ многострочный
//javascript однострочный
/*javascript */ многострочный
//PHP однострочный
#PHP однострочный
/*PHP*/ многострочный


Далее...

3. Явные имена в названиях, явно английскими литерами)
Любые переменные, константы, функции, классы, и имена файлов,
я называю своими именами. Незнаю, перевода!, лезу в онлайн-переводчик
и перевожу. Я не использую, транслитерацию с русского языка, по-крайней мере,
ранее я использовал, но сейчас, я приучил себя к этому,
давать явные имена, отображающие смысл, и точка.

А теперь, немного лирики. Я хватаю, понемногу практику, то там, то там. То в Javascript,
полез, то в PHP. Немного CSS, немного Photoshop. Очень мало времени.
Это наверно, моё хобби - ИТ.
Люблю экспериментировать. Беру простенький чужой скрипт, делаю с самого ноля почти тоже, меняю, практикую, и действия запоминаются, потом пишется из головы...

Что я хотел, ещё разобрать.
Как я подключаюсь к базе данных.
У меня есть файл в директории сайта(DENWER XD)
Называется, db_connect.php
В этом файле функция db_connect()
PHP:
скопировать код в буфер обмена
  1.  
  2. # Функция подключения к базе
  3. function db_connect() {
  4.         $db = mysql_connect(
  5.                 'localhost',                    // сервер
  6.                 'login',                        // логин
  7.                 'pass'                  // пароль
  8.                 );
  9.         $result = mysql_select_db(
  10.                 'name_database',        // имя базы данных
  11.                 $db
  12.                 );
  13.        
  14.         // Кодировка
  15.         mysql_query ("SET NAMES utf8");
  16.         mysql_query ("set character_set_client='utf8'");
  17.         mysql_query ("set character_set_results='utf8'");
  18.         mysql_query ("set collation_connection='utf8_general_ci'");
  19. }
  20. #################
  21.  


В PHP-коде, когда я делаю проверку if на существование
переменных, а далее в теле запрос к базе данных, то я делаю например так:
PHP:
скопировать код в буфер обмена
  1.  
  2. if(isset($alpha) && $alpha == 1) {
  3.         include('db_connect.php');
  4.         db_connect();
  5.         // SQL-запрос
  6.         // другие действия, вывод, return b т.д.
  7.         mysql_close();
  8. }
  9.  

Может, я неправильно делаю, в понятиях оптимизации, потому что при каждом
запросе я нагружаю сервер MYSQL, наверное. Но, я думаю, такой подход, обезопасит
от SQL-инъекций из адресной строки браузера. Может, я и неправ, поправьте меня.

Далее...

Кто-то же, открывал когда-нибудь исходный код Яндекса. Весь код в одну строчку.
Я, думал, как они это делают. Сначала думал, срезают регулярками, но потом понял,
что строка создается при построении. Какой CGI-язык они используют, я незнаю.
Однажды, я начал изучать функции PHP. И при моих экспериментах, я научился выводить в одну строку. Вот пример index.php
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. include('function.php');
  4.         //tech_work();          // Технические работы
  5.         html();                // Основная страница
  6. ?>
  7.  


Как видно, в теле index.php всего лишь один include и 2 функции.
Первая, комментированная функция, это страница которая показывается пользователям,
когда сайт на тех. работах
А вторая, сама главная страница для вывода.
Ясно же ведь, чтобы показать, тех.работы функцию tech_work() нужно раскомментировать, а функцию html() закомментировать.

А теперь посмотрим файл функций:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3.  
  4. # Страница ошибки или "Ведутся технические работы!"
  5. function tech_work() {
  6.         echo '<!DOCTYPE HTML>';
  7.         echo '<html>';
  8.         echo '<head>';
  9.         echo '<link rel="icon" type="image/vnd.microsoft.icon" href="path-to/favicon.ico">';
  10.         echo '<link rel="SHORTCUT ICON" href="path-to/favicon.ico">';
  11.         echo '<noscript><meta http-equiv="refresh" content="0; URL=/bad_client.php"></noscript>';
  12.         echo '<title>Технические работы</title>';
  13.         echo '</head>';
  14.        
  15.         echo '<body>';
  16.         echo 'Ведутся технические работы';
  17.         echo '</body>';
  18.         echo '</html>';
  19. }
  20.  
  21. # Основная страница
  22. function html() {
  23.        
  24.         # Мета-теги
  25.         function meta() {
  26.                 echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
  27.                 echo '<meta http-equiv="Pragma" content="no-cache">';
  28.                 echo '<meta name="revisit-after" content="4 days">';
  29.                 echo '<meta name="robots" content="all">';
  30.         }
  31.         ////////////////////
  32.        
  33.         # CSS-файлы
  34.         function css() {
  35.                 echo '<link href="main.css" rel="stylesheet" type="text/css">';                         // main.css
  36.                 echo '<link href="css/header.css" rel="stylesheet" type="text/css">';           // header.css
  37.                 echo '<link href="css/g_menu.css" rel="stylesheet" type="text/css">';           // g_menu.css
  38.                 echo '<link href="css/left_bar.css" rel="stylesheet" type="text/css">';         // left_bar.css
  39.                 echo '<link href="css/centr_bar.css" rel="stylesheet" type="text/css">';        // centr_bar.css
  40.                 echo '<link href="css/right_bar.css" rel="stylesheet" type="text/css">';        // right_bar.css
  41.                 echo '<link href="css/footer.css" rel="stylesheet" type="text/css">';           // footer.css
  42.         }
  43.         ////////////////////
  44.        
  45.         # JS-файлы
  46.         function js() {
  47.         }
  48.         ////////////////////
  49.        
  50.         # Header
  51.         function headeri() {
  52.                 echo '<div id="header">';
  53.                         include('header.php');
  54.                                 logo();
  55.                                 head_cont();
  56.                                 g_menu();
  57.                 echo '</div><!--header-->';
  58.         }
  59.         ////////////////////
  60.        
  61.         # Content
  62.         function content() {
  63.                 echo '<div id="content" style="visibility: visible !important">';
  64.                         echo '<div id="left_bar">';             // Левый бар
  65.                                 include('left_bar.php');
  66.                                 city();
  67.                         echo '</div><!--left_bar-->';
  68.                        
  69.                         echo '<div id="centr_bar">';    // Центральный бар
  70.                                 include('centr_bar.php');
  71.                                 feed_p();
  72.                                 comments_p();
  73.                         echo '</div><!--centr_bar-->';
  74.                        
  75.                         echo '<div id="right_bar">';    // Правый бар
  76.                                 include('right_bar.php');
  77.                                 ksd();
  78.                         echo '</div><!--right_bar-->';
  79.                 echo '</div><!--content-->';
  80.         }
  81.         ////////////////////
  82.        
  83.         # Footer
  84.         function footer() {
  85.                 echo '<div id="footer">';
  86.                         include('footer.php');
  87.                 echo '</div><!--footer-->';
  88.         }
  89.         ////////////////////
  90.        
  91.         # HTML
  92.         echo '<!DOCTYPE HTML>';
  93.         echo '<html>';
  94.         echo '<head>';
  95.         echo '<link rel="icon" type="image/vnd.microsoft.icon" href="path-to/favicon.ico">';
  96.         echo '<link rel="SHORTCUT ICON" href="path-to/favicon.ico">';
  97.                 meta();
  98.                 css();
  99.         echo '<noscript><meta http-equiv="refresh" content="0; URL=/bad_client.php"></noscript>';
  100.         echo '<title>Тестинг</title>';
  101.        
  102.         echo '</head>';
  103.        
  104.         echo '<body>';
  105.         echo '<div id="main_1">';
  106.         echo '</div><!--main_1-->';
  107.        
  108.         echo '<div id="main_2">';
  109.                 echo '<div id="wr">';
  110.                         headeri();
  111.                         content();
  112.                         footer();
  113.                 echo '</div><!--wr-->';
  114.         echo '</div><!--main_2-->';
  115.         echo '</body>';
  116.         echo '</html>';
  117. }
  118.  
  119. ?>
  120.  


Не буду, комментировать этот набор функций. Хочу спросить, а правильно ли это.
Не нагружу я сервер, множеством операторов echo, их число, конечно можно уменьшить, но всё-таки, как вам такой подход, и в исходнике, всё потом в одной строчке, как в Яндексе...

Гуру PHP и не сильные гуру PHP, оставляйте свои рекомендации, советы, наработки, чтобы позволило повысить уровень PHP-знаний.
На этом вроде бы всё!
Спасибо за прочитанное, жду ваших советов!
 
 Top
LIME
Отправлено: 18 Мая, 2012 - 23:13:50
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




по пункту 1
в нормальном IDE жмешь в меню на пунктик и тебе все само собой форматируется))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB