Форматирование, если оператор для удобочитаемости

В вашем коде есть два хитрых места для нулевых значений:

  1. Если Forms![Press 2]![Containment - Press 2 subform].Form![Part Number] равно нулю, DLookUp будет обрабатываться неправильно, так как вы включаете его как строка.

    Исправлено: используйте значение формы в качестве параметра, это также позволяет избежать ошибок внедрения SQL:

    other = DLookup("[Model]", "[Part Number & Part Name]", "[Part Number]= Forms![Press 2]![Containment - Press 2 subform].Form![Part Number]")
    
  2. Вы сохраняете результат DLookUp в строке. Вы можете использовать Nz здесь для возврата другой строки или объединить строку нулевой длины с результатом DLookUp, чтобы обработать значение Null в виде строки нулевой длины:

    other = VbNullString & DLookup("[Model]", "[Part Number & Part Name]", "[Part Number]= Forms![Press 2]![Containment - Press 2 subform].Form![Part Number]")
    
  3. [119 ]

    Это должно охватывать все места, где нули могут мешать этой части кода.

5
задан Greg Hewgill 20 October 2008 в 07:31
поделиться

8 ответов

Я извлек бы, "изображение" логика в ее собственную функцию, которая делает if более читаемый и также позволяет Вам централизовать логику.

function is_image($filename) {
    $image_extensions = array('png', 'gif', 'jpg');

    foreach ($image_extensions as $extension) 
        if (strrpos($filename, ".$extension") !== FALSE)
            return true;

    return false;
}

if (is_image($file) && !file_exists("$thumbsdir/$file")) {
    createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
    fwrite($log,date("Y-m-d")." @ ".date("H:i:s")."  CREATED: $thumbsdir/$file\n");
}
17
ответ дан 18 December 2019 в 05:45
поделиться
if ((strpos($file, '.jpg',1) ||
     strpos($file, '.gif',1) ||
     strpos($file, '.png',1))
    && file_exists("$thumbsdir/$file") == false)
{
  createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
  fwrite($log,date("Y-m-d")." @ ".date("H:i:s")."  CREATED: $thumbsdir/$file\n");
}
4
ответ дан 18 December 2019 в 05:45
поделиться
function check_thumbnail($file)
{
    return (strpos($file, '.jpg',1) && file_exists("$thumbsdir/$file") == false ||
            strpos($file, '.gif',1) && file_exists("$thumbsdir/$file") == false ||
            strpos($file, '.png',1) && file_exists("$thumbsdir/$file") == false);
}

if (check_thumbnail ($file)) {
  createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
  fwrite($log,date("Y-m-d")." @ ".date("H:i:s")."  CREATED: $thumbsdir/$file\n");
}

После извлечения логики к отдельной функции можно уменьшить дублирование:

function check_thumbnail($file)
{
    return (strpos($file, '.jpg',1) ||
            strpos($file, '.gif',1) ||
            strpos($file, '.png',1)) &&
           (file_exists("$thumbsdir/$file") == false);
}
2
ответ дан 18 December 2019 в 05:45
поделиться

Я разделил бы IFS, поскольку существует некоторый повторяющийся код там. Также я пытаюсь выйти из стандартной программы как можно раньше:

if (!strpos($file, '.jpg',1) && !strpos($file, '.gif',1) && !strpos($file, '.png',1))
{
    return;
}

if(file_exists("$thumbsdir/$file"))
{
    return;
}

createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
fwrite($log,date("Y-m-d")." @ ".date("H:i:s")."  CREATED: $thumbsdir/$file\n");
2
ответ дан 18 December 2019 в 05:45
поделиться

file_exists проверка, кажется, является постоянной для каждых из типов файлов, не сравнивайте их если file_exists проверка была пройдена.

if (file_exists("$thumbsdir/$file") == false)
{
   if(strpos($file, '.jpg',1) ||
     strpos($file, '.gif',1) ||
     strpos($file, '.png',1)
   {
     createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
     fwrite($log,date("Y-m-d")." @ ".date("H:i:s")."  CREATED: $thumbsdir/$file\n");
   }
}
2
ответ дан 18 December 2019 в 05:45
поделиться

Я разбил бы его как это, отложив проблему дублирования:

if (strpos($file, '.jpg',1) && file_exists("$thumbsdir/$file") == false
 || strpos($file, '.gif',1) && file_exists("$thumbsdir/$file") == false
 || strpos($file, '.png',1) && file_exists("$thumbsdir/$file") == false) {
  createThumb("$gallerydir/$file", "$thumbsdir/$file",$thumbsize);
  fwrite($log,date("Y-m-d")." @ ".date("H:i:s")."  CREATED: $thumbsdir/$file\n");
}

Ответ Улана @Fire обращается к дублированию хорошо.

1
ответ дан 18 December 2019 в 05:45
поделиться

Я нахожу, что следующее больше читаемого использования getimagesize (). Я пишу это первое, что пришло на ум, таким образом, может требоваться некоторая отладка.

Вертикальный код более читаем, чем горизонтальный, по моему скромному мнению.

// Extract image info if possible
    // Note: Error suppression is for missing file or non-image
if (@$imageInfo = getimagesize("{$thumbsdir}/{$file}")) {

    // Accept the following image types
    $acceptTypes = array(
        IMAGETYPE_JPEG,
        IMAGETYPE_GIF,
        IMAGETYPE_PNG,
    );

    // Proceed if image format is acceptable
    if (in_array($imageInfo[2], $acceptTypes)) {

        //createThumb(...);
        //fwrite(...);

    }

}

Мир + счастливое взламывание.

1
ответ дан 18 December 2019 в 05:45
поделиться

Мог бы также добавить мои два цента.

if(!file_exists($thumbsdir . '/' . $file) && preg_match('/\.(?:jpe?g|png|gif)$/', $file)) {
    createThumb($gallerydir . '/' . $file, $thumbsdir . '/' . $file, $thumbsize);
    fwrite($log, date('Y-m-d @ H:i:s') . '  CREATED: ' . $thumbsdir . '/' . $file . "\n");
}
1
ответ дан 18 December 2019 в 05:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: