Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Можно ли как-то сократить этот код?


 Share

Recommended Posts

06.09.2022 в 12:49, Exploits сказал:

не в ту степь вообще)) где пхп а где база!

доступ к базе через php ))) кодом
С точки зрения скорости.. написать
for () {
  query('insert')
}
может оказаться быстрее, чем сформировать массив

а дальше  .. вопрос опыта
 

Link to comment
Share on other sites

06.09.2022 в 12:54, chukcha сказал:

доступ к базе через php ))) кодом
С точки зрения скорости.. написать
for () {
  query('insert')
}
может оказаться быстрее, чем сформировать массив

а дальше  .. вопрос опыта
 

не знаю быстрее ли в каждой итерации делать запрос, наверное многое зависит от самой базы и самого запроса, тесты такие не делал

Link to comment
Share on other sites

06.09.2022 в 12:56, Exploits сказал:

не знаю быстрее ли в каждой итерации делать запрос,

конечно не быстрее.

но если у тебя 2-3 запроса - разница несущественна
Но если, например, импорты то очень существенна.

Link to comment
Share on other sites

Прям любопытство меня разперло. Провел тестик. Самый быстрый код - это полный код. Также быстро вариант @chukcha с присвоением пустоты всем переменным сразу с дальнейшей обработкой каждого поля.

Потом идет сокращенный код (незначительно медленее)

И потом уже вариант с массивами (в 3-5 раз медленнее полного кода).

 

Наиболее читаемый и всем понятный с первого взгляда вариант - это полный код.

 

Когда появляются поля, где нужно задать дефолтные значения (в настройках модуля), это уже не подойдет под перебор массива. Оно уже будет не рядом и надо будет больше думать, что куда относится.

 

Мой выбор - полный код )))

test.zip

  • +1 1
Link to comment
Share on other sites

06.09.2022 в 14:43, SergeTkach сказал:

Прям любопытство меня разперло. Провел тестик. Самый быстрый код - это полный код. Также быстро вариант @chukcha с присвоением пустоты всем переменным сразу с дальнейшей обработкой каждого поля.

Потом идет сокращенный код (незначительно медленее)

И потом уже вариант с массивами (в 3-5 раз медленнее полного кода).

 

Наиболее читаемый и всем понятный с первого взгляда вариант - это полный код.

 

Когда появляются поля, где нужно задать дефолтные значения (в настройках модуля), это уже не подойдет под перебор массива. Оно уже будет не рядом и надо будет больше думать, что куда относится.

 

Мой выбор - полный код )))

test.zip 35 \u041a\u0431 · 0 скачиваний

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

Link to comment
Share on other sites


06.09.2022 в 14:43, SergeTkach сказал:

Прям любопытство меня разперло. Провел тестик. Самый быстрый код - это полный код. Также быстро вариант @chukcha с присвоением пустоты всем переменным сразу с дальнейшей обработкой каждого поля.

Потом идет сокращенный код (незначительно медленее)

И потом уже вариант с массивами (в 3-5 раз медленнее полного кода).

 

Наиболее читаемый и всем понятный с первого взгляда вариант - это полный код.

 

Когда появляются поля, где нужно задать дефолтные значения (в настройках модуля), это уже не подойдет под перебор массива. Оно уже будет не рядом и надо будет больше думать, что куда относится.

 

Мой выбор - полный код )))

test.zip 35 \u041a\u0431 · 0 скачиваний

Прикольно)) А если переменных 100 000:D

Ну а серьезно, то где пару строк кода а где 4 или 6 тыс строк кода, разница есть все же

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

ТС просто спросил а тут уже и тесты пошли ахахах, но зато обсудили все варианты

Link to comment
Share on other sites

Не, ну а если настройки модуля, то там же тернарный оператор не канает. Там elseif.

Значит надо писать либо полный код, либо массив.

 

Массив - я пробовал.

 

Также пробовал обработку полей через отдельный метод, чтобы было коротко, но и понятнее:

$data['status'] = $this->field('status');

 

У меня даже есть недописанный шаблон, в котором я застрял на всяких финтиклюшках, которые заставляли меня думать больше о финтиклюшках, чем о задаче...

 

В конце-концов есть так называемый код-стайл. Надо писать так, как принятно в конкретной системе. Тогда все будет только легче.

Link to comment
Share on other sites

06.09.2022 в 15:07, SergeTkach сказал:

В конце-концов есть так называемый код-стайл.

для одного/двух решений, для одной версии
 

		$parameters = [
			'product_table'  => [],
			'product_label'  => [],
			'product_status' => 0
		];
		
		foreach ($parameters as $parameter => $default) {
			if (isset($this->request->post[$this->module_name . $parameter])) {
				$data[$this->module_name . $parameter] = $this->request->post[$this->module_name . $parameter];
			} elseif ($this->config->has($this->module_name . $parameter)) {
				$data[$this->module_name . $parameter] = $this->config->get($this->module_name . $parameter);
			} else {
				$data[$this->module_name . $parameter] = $default;
			}
		}


Т.е.. меняешь только  массив и название модуля

Link to comment
Share on other sites

В 06.09.2022 в 14:43, SergeTkach сказав:

Прям любопытство меня разперло. Провел тестик. Самый быстрый код - это полный код. Также быстро вариант @chukcha с присвоением пустоты всем переменным сразу с дальнейшей обработкой каждого поля.

Потом идет сокращенный код (незначительно медленее)

И потом уже вариант с массивами (в 3-5 раз медленнее полного кода).

 

Наиболее читаемый и всем понятный с первого взгляда вариант - это полный код.

 

Когда появляются поля, где нужно задать дефолтные значения (в настройках модуля), это уже не подойдет под перебор массива. Оно уже будет не рядом и надо будет больше думать, что куда относится.

 

Мой выбор - полный код )))

test.zip 35 \u041a\u0411 · 1 download

image.thumb.png.b7450d8a6d05c632e0305013b54c7c55.png

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.