Debouncing Switch Issue
Bouncing of a mechanical switch happens in very few milliseconds, faster than you can see a led shine. 

So, for your task, you don't need any debouncing.

The description or your task lacks what should happen "if not". I assume the led should shine while both button is pressed and ldr is covered. If either button is not pressed, or ldr is lit, the led should remain off.

This one is too simple:

void loop() {
  bool ldrDark = analogRead(A0) &lt; MAX_LDRBRIGHT;  
  digitalWrite(led, ldrDark &amp;&amp; digitalRead(buttonPin));
}  


To add a delay (led goes on only when button is pressed some time) is easy as well.

const byte LED = LED_BUILTIN; // 13 on UNO

const byte BUTTON = 8;  // Button connects to GND
const byte PRESSED = LOW; // due to INPUT_PULLUP
const int DELAY = 300; // ms  
bool btnState; // true = HIGH when presse

const byte LDR = A0; // LDR to 5V, Resistor to GND : Low values when dark   
const int MIN_LDRBRIGHT= 420; // depends on resistor and LDR

void setup() {
   pinMode (LED, OUTPUT);
   pinMode (BUTTON, INPUT_PULLUP);
}

void loop() {
  static unsigned long lastOpen;
  if (digitalRead(BUTTON) == PRESSED) {
    if (millis() - lastOpen &gt; DELAY)  
      btnState = HIGH;
    else btnState = LOW;
  } else {
      lastOpen = millis(); // to remember last moment button was released
      btnState = LOW; 
  }

  bool ldrDark = analogRead(A0) &lt; MIN_LDRBRIGHT;

  digitalWrite(LED, ldrDark &amp;&amp; btnState);
}